java - 从 jndi 注入(inject)属性

标签 java spring tomcat jndi context.xml

我的应用程序使用 spring,在 tomcat 上运行

我有课

public class Entity{
    private String field;
    private Properties properties;

...geters/setters...
}

和context.xml

<?xml version='1.0' encoding='utf-8'?>
<Context>
    <Environment name="field.name" value="value" type="java.lang.String" override="false" />
</Context>

和spring.xml

...
    <bean id="entity" class="com.my.model.Entity">
        <property name="field">
            <jee:jndi-lookup jndi-name="java:comp/env/field.name" />
        </property>
        <property name="properties">
            <value>
                key1=value1
                key2=value2
                key3=value3
            </value>
        </property>
    </bean>
...

我可以通过哪种方式通过 context.xml 为 Properties 字段注入(inject)值,例如 String 字段?

最佳答案

Context.xml 不能包含具有 map 类型的环境。 (合法的类型有 java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang .Short 或 java.lang.String)

但是您可以在部署中包含属性文件并通过环境元素引用该文件的路径。然后只需将该属性文件的内容注入(inject)到您的 bean 中即可。

<jee:jndi-lookup 
     id="beanConfigPath" 
     jndi-name="CONFIG_PATH"/>

<bean ...>
    ...
    <util:properties id="properties" location="${beanConfigPath}" />
</bean>

关于java - 从 jndi 注入(inject)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815800/

相关文章:

java - 使用 iText,如何使用 CssResolver 和 CssFile 将 css 应用到我的 PDF 文档?

Java 类困惑?

java - Spring Framework应用中JDBC使用RowMapper的一些疑惑

spring - 如果 Spring boot REST Api 中存在额外参数,如何拒绝请求并发送自定义消息

eclipse - Tomcat 服务器在 eclipse 中出现错误

Tomcat 7 管理器脚本停止/启动应用程序

java - 使用iText(signdeferred)创建PDF数字签名,验证签名时出现invalid signature问题

java - 如何在 Java 中以 UTC 或 GMT 格式获取当前日期和时间?

java - RequestMappingHandlerAdapter': Invocation of init method failed; nested exception is java. lang.NoSuchMethodError

tomcat - 如何在没有 ClassNotFound 异常的 Apache Tomcat 中配置 Impala/Hive2 JDBC 驱动程序