[SPRING] Main 클래스에서 스프링 빈에 속성을 주입하는 방법
SPRINGMain 클래스에서 스프링 빈에 속성을 주입하는 방법
내 응용 프로그램과 함께 봄을 사용하고, 클래스 경로의 일부 파일에서 일부 속성을 내 응용 프로그램에 삽입 할 수 있으며 모든 것이 완벽하게 작동합니다. 즉
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="searchContextAttributes" value="true" />
<property name="contextOverride" value="true" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:application.properties</value>
</list>
</property>
</bean>
이제 스프링 컨텍스트에서 $ {any.property.from.application.properties}를 사용할 수 있습니다. 그리고 내 주요 수업 :
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("appContext.xml");
그것은 잘 작동, 제 질문은 어떻게 거기에 처음에 봄 컨텍스트에서 속성 파일 위치를 주입합니까, 나는 내 애플 리케이션을 구성 할 수 있도록하고 싶습니다. C : \ dir 또는 / user / home / dir에서 응용 프로그램을 실행하는 경우 응용 프로그램 컨텍스트에서 값이 C : \ application.properties 또는 /user/home/dir/application.properties 중 하나 여야한다고 가정합니다.
해결법
-
==============================
1.나는 비슷한 문제가 언젠가 되돌아왔다. 내 요구 사항은 속성 파일이 응용 프로그램 내부에 번들로 제공되지 않았기 때문입니다 (따라서 클래스 경로에도 포함되지 않음). 파일은 파일 시스템의 어느 위치 에나있을 수 있습니다. 여기 내가 어떻게 해결했는지,
나는 비슷한 문제가 언젠가 되돌아왔다. 내 요구 사항은 속성 파일이 응용 프로그램 내부에 번들로 제공되지 않았기 때문입니다 (따라서 클래스 경로에도 포함되지 않음). 파일은 파일 시스템의 어느 위치 에나있을 수 있습니다. 여기 내가 어떻게 해결했는지,
나는 당신의 예제를 재사용 중입니다.
<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <property name="searchContextAttributes" value="true" /> <property name="contextOverride" value="true" /> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <value>file://${APP_PROP_HOME}/application.properties</value> </list> </property> </bean>
Spring은 $ {APP_PROP_HOME}을 해당 env 등록 정보에 저장된 값으로 해석하며 응용 프로그램은 런타임에 구성됩니다.
-
==============================
2.질문을 올바르게 읽는 경우 외부 속성 파일 (예 : 파일이 애플리케이션 런타임 클래스 경로에 없음)을 사용하려고합니다. 이 경우 파일 태그를 사용해야합니다.
질문을 올바르게 읽는 경우 외부 속성 파일 (예 : 파일이 애플리케이션 런타임 클래스 경로에 없음)을 사용하려고합니다. 이 경우 파일 태그를 사용해야합니다.
<value>file:///c:\application.properties</value>
-
==============================
3.@Value를 사용하여 env의 값을 주입 할 수 있습니다. 예:
@Value를 사용하여 env의 값을 주입 할 수 있습니다. 예:
private someFoo; @Value("${systemProperties.someFoo}") public void setSomeParam(String someParam) { this.someFoo = someParam; }
from https://stackoverflow.com/questions/6820724/how-to-inject-properties-into-a-spring-bean-from-main-class by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring CrudRepository는 사용자 정의 쿼리 메서드 정의에 AbstractMethodError를 발생시킵니다. (0) | 2019.05.27 |
---|---|
[SPRING] 세션 기반 데이터 소스가있는 스프링 부트 (0) | 2019.05.27 |
[SPRING] autowire와 컴포넌트 주석을 사용할 때 Spring bean이 삽입되거나 생성되지 않습니다. (0) | 2019.05.27 |
[SPRING] 속성을 찾을 수 없습니다 : 봄과 타일에 NoSuchAttributeException (0) | 2019.05.27 |
[SPRING] DTO 및 Entity 클래스 이름 지정 (0) | 2019.05.27 |