【问题标题】:inject Property from jndi从 jndi 注入属性
【发布时间】:2015-08-04 17:38:31
【问题描述】:

我的应用使用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 字段注入值,例如 String 字段?

【问题讨论】:

    标签: java spring tomcat jndi context.xml


    【解决方案1】:

    Context.xml 不能包含具有 Map 类型的 Environment。 (合法的类型有 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)

    但您可以在部署中包含一个属性文件,并通过 Environment 元素引用该文件的路径。然后只需将该属性文件的内容注入到您的 bean 中即可。

    <jee:jndi-lookup 
         id="beanConfigPath" 
         jndi-name="CONFIG_PATH"/>
    
    <bean ...>
        ...
        <util:properties id="properties" location="${beanConfigPath}" />
    </bean>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2017-05-28
      • 2023-03-21
      相关资源
      最近更新 更多