Read an environment variable from applicationContext.xml

前端 未结 4 655
不思量自难忘°
不思量自难忘° 2021-01-02 15:42

I need read an environment variable defined in my web.xml


    Path Repositorio NFS
    

        
相关标签:
4条回答
  • 2021-01-02 16:08

    You can lookup JNDI entries (both environment entries and resources) with the JndiObjectFactoryBean or <jee:jndi-lookup>:

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

    (To use the jee-namespace, you must declare it).

    That defines a spring bean named "PATH_ENV" that contains (as a string) the path configured int the environment entry. You can now inject it into other beans:

    <bean class="xy.Foo">
        <property name="path" ref="PATH_ENV"/>
    </bean>
    

    The remaining difficulty is concatenating the strings. (Unfortunately, there is no JndiPlaceholderConfigurer that would replace placeholders with JNDI environment entries, so you can't use the ${property}/foo syntax to concatenate, and must supply yet another bean definition:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <bean factory-bean="PATH_ENV" factory-method="concat">
                <constructor-arg>/myprop.properties</constructor-arg>
            </bean>
        </property>
    </bean>
    

    (code untested as I don't have a Spring project at hand to test it)

    0 讨论(0)
  • 2021-01-02 16:09

    Why not just use the following?

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="location" value="file:C:/V3/myprop.properties"/>
    </bean>
    
    0 讨论(0)
  • 2021-01-02 16:25

    You can use context-param, that will work.

    <context-param>
        <param-name>PATH_ENV</param-name>
        <param-value>C:/V3</param-value>
    </context-param>
    
    0 讨论(0)
  • 2021-01-02 16:32

    I solved something, I think, similar.

    I create a Windows System Variable with the changing part of the path:

    my computer --> advanced options --> environment options --> Systeme Variable
    

    And then with this I complete the path on Spring AppContext like this:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    
       <property name="locations">  
           <list>
                  <value>file:${PARENT_PATH}/conf/dev/jdbc.properties</value>
           <list>           
       </property>
    </bean>
    

    I don't know if really help, but for me works

    0 讨论(0)
提交回复
热议问题