복붙노트

[SPRING] 단일 빈에서 사용하기 위해 여러 파일에서 스프링 특성을 수집하는 방법

SPRING

단일 빈에서 사용하기 위해 여러 파일에서 스프링 특성을 수집하는 방법

나는 봄 동안 내 머리를 감싸지 않았다. 그래서이 질문이 의미가 없으면 나에게 맞춰라.

PropertyPlaceholderConfigurer가 있습니다.

<bean id="rdbmPropertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false">
    <property name="location" value="classpath:/properties/rdbm.properties" />
</bean>

그리고 나는 콩이 주입 된 것 같아요?

<bean id="PortalDb" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${hibernate.connection.driver_class}" />
    <property name="url" value="${hibernate.connection.url}" />
    <property name="username" value="${hibernate.connection.username}" />
    <property name="password" value="${hibernate.connection.password}" />
    ...

내가 원하는 것은 사용자 이름 / 암호로 다른 속성 파일을 가리키는 두 번째 자리 표시 자로 속성을 두 개의 다른 파일로 나눌 수 있습니다. 그런 다음 데이터베이스 연결 정보를 db 사용자 이름 / 암호와 분리하여 사용할 수 있습니다.

기본적으로 rdbmPropertiesPlaceholder를 다른 ID와 파일로 복사하고 속성에 액세스하려고 시도했지만 작동하지 않습니다.

이 코드는 uPortal 오픈 소스 웹 포털 프로젝트에서 가져온 것입니다.

해결법

  1. ==============================

    1.이 표기법을 사용하면 여러 파일을 지정할 수 있습니다.

    이 표기법을 사용하면 여러 파일을 지정할 수 있습니다.

     <bean id="rdbmPropertiesPlacholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" lazy-init="false">
         <property name="locations">
           <list>
               <value>classpath:/properties/rdbm.properties</value>
               <value>classpath:/properties/passwords.properties</value>
           </list>
        </property>
     </bean>
    

    propertyplaceholderconfigurerer는 단지 하나만있는 것처럼 보이도록 이들 모두를 병합하기 때문에 bean 정의는 속성의 출처를 알지 못합니다.

  2. ==============================

    2.org.springframework.beans.factory.config.PropertyPlaceholderConfigurer는 이미 대답했듯이이를 수행 할 수 있습니다. 당신이 원할 수있는 일은 이름 공간을 사용하여 모호하지 않고 두 파일에서 같은 이름의 속성을 참조 할 수 있습니다. 귀하의 예를 들어, 당신은 이것을 할 수 있습니다 :

    org.springframework.beans.factory.config.PropertyPlaceholderConfigurer는 이미 대답했듯이이를 수행 할 수 있습니다. 당신이 원할 수있는 일은 이름 공간을 사용하여 모호하지 않고 두 파일에서 같은 이름의 속성을 참조 할 수 있습니다. 귀하의 예를 들어, 당신은 이것을 할 수 있습니다 :

    <bean id="generalPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:/properties/general.properties"/>
    </bean>
    
    <bean id="db.PropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:/properties/rdbm.properties" />
        <property name="placeholderPrefix" value="$db{" />
        <property name="placeholderSuffix" value="}" />     
    </bean>
    

    컨텍스트 파일에서 $ {someproperty}로 일반 속성을 참조하고 $ db {someproperty}로 rdbm 속성을 참조 할 수 있습니다.

    이렇게하면 컨텍스트 파일이 개발자에게 훨씬 명확하고 명확 해집니다.

  3. from https://stackoverflow.com/questions/534199/how-to-collect-spring-properties-from-multiple-files-for-use-on-a-single-bean by cc-by-sa and MIT license