[SPRING] 봄 프로젝트에서 속성 파일을 읽는 방법?
SPRING봄 프로젝트에서 속성 파일을 읽는 방법?
이 질문을 게시하기 전에 Spring 프로젝트 (웹 기반 프로젝트가 아닙니다)에서 Properties를 가져 오도록 google을 보겠습니다. 모든 사람들이 application-context.xml에 대해 이야기하고 있으며 다음과 같은 구성을 가지고 있기 때문에 혼란 스럽습니다.
그러나, 나는 봄과 함께 정상적인 Java Project (웹 애플 리케이션과 같은 물건)에서 일하고 있습니다. 하지만 속성 파일에서 몇 가지 공통 속성을 얻고 싶습니다 및 JAVA 파일에서 사용해야합니다. Spring / Spring Annotation을 사용하여이를 어떻게 달성 할 수 있습니까?
내 프로젝트에서 myprops.properties 파일을 구성해야하는 곳과 봄을 통해 호출하는 방법은 무엇입니까?
나의 이해는 application-context.xml은 웹 기반 프로젝트에만 사용된다. 그렇지 않다면 application.xml을 정의하기 위해 web.xml이 없으므로이 application-context.xml을 어떻게 구성해야합니까?
해결법
-
==============================
1.다음과 같은 XML 기반 응용 프로그램 컨텍스트를 만들 수 있습니다.
다음과 같은 XML 기반 응용 프로그램 컨텍스트를 만들 수 있습니다.
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
xml 파일이 클래스 경로에있는 경우 또는 파일 시스템에서 파일을 사용할 수 있습니다.
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
더 많은 정보는 Spring 레퍼런스 문서에서 볼 수있다. 또한 정상 종료를 보장하기 위해 종료 훅을 등록해야합니다.
ctx.registerShutdownHook();
다음으로 PropertyPlaceHolderConfigurer를 사용하여 '.properties'파일에서 속성을 추출하고 bean에 삽입 할 수 있습니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="classpath:com/foo/jdbc.properties"/> </bean> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean>
마지막으로, 주석 기반 구성을 선호하는 경우 @Value 주석을 사용하여 bean에 속성을 삽입 할 수 있습니다.
@Component public class SomeBean { @Value("${jdbc.url}") private String jdbcUrl; }
-
==============================
2.Spring 4부터 @Conperturation 클래스에서 @PropertySource 주석을 사용할 수있다.
Spring 4부터 @Conperturation 클래스에서 @PropertySource 주석을 사용할 수있다.
@Configuration @PropertySource("application.properties") public class ApplicationConfig { // more config ... }
설정 파일을 classpath 외부에 가지고 싶으면 file : 접두사를 사용할 수 있습니다 :
@PropertySource("file:/path/to/application.properties")
또는 환경 변수를 사용하여 파일을 정의 할 수 있습니다
@PropertySource("file:${APP_PROPERTIES}")
APP_PROPERTIES가 속성 파일의 위치 값을 갖는 환경 변수 인 경우 (예 : APP_PROPERTIES). /path/to/application.properties.
@PropertySource, 사용법, 속성 값을 재정의하는 방법 및 선택적 속성 소스를 지정하는 방법에 대한 자세한 내용은 Spring @PropertySource의 블로그 게시물을 읽어보십시오.
-
==============================
3.Spring을 사용할 필요가 없습니다. 다음과 같이 일반 java로 읽을 수 있습니다.
Spring을 사용할 필요가 없습니다. 다음과 같이 일반 java로 읽을 수 있습니다.
Properties properties = new Properties(); properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
-
==============================
4.귀하의 프로젝트가 전체 앱에서 어떻게 사용될 것인지 알아낼 수 있습니까? 프로젝트가 웹 응용 프로그램의 빌드 경로로 사용되고 프로젝트의 구성이 스프링 주석을 통해 이루어지기 때문에 application.xml 파일을 추가하는 방법에 대해 의문의 여지가 없습니다. 제 제안은 프로젝트를 사용할 사람들을 발표하고, 필요한 것을 알려주고 코드에 @Value ( "$ {valuename}")를 추가해야한다는 것입니다.
귀하의 프로젝트가 전체 앱에서 어떻게 사용될 것인지 알아낼 수 있습니까? 프로젝트가 웹 응용 프로그램의 빌드 경로로 사용되고 프로젝트의 구성이 스프링 주석을 통해 이루어지기 때문에 application.xml 파일을 추가하는 방법에 대해 의문의 여지가 없습니다. 제 제안은 프로젝트를 사용할 사람들을 발표하고, 필요한 것을 알려주고 코드에 @Value ( "$ {valuename}")를 추가해야한다는 것입니다.
from https://stackoverflow.com/questions/14570477/how-to-read-properties-file-in-spring-project by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3 / Thymeleaf에서 매개 변수를 사용하여 현지화 메시지를 표시하는 방법 (0) | 2019.03.25 |
---|---|
[SPRING] JBoss와 Spring을 사용하여 Java 웹 응용 프로그램간에 비즈니스 객체 인스턴스를 공유하는 가장 좋은 방법은 무엇입니까? (0) | 2019.03.25 |
[SPRING] Spring을 사용하여 메모리 내 DB 시작 및 설정 (0) | 2019.03.25 |
[SPRING] 왜이 자바 동적 웹 프로젝트에서 어떤 주요 방법을 볼 수 없습니까? (0) | 2019.03.25 |
[SPRING] 특정 날짜의 Cron 식 (0) | 2019.03.25 |