Spring 에서 Properties 프로필 사용(1)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=123
2.conf.xml <bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>jdbc.properties</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
3.Config.java package com.starxing.test;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class Config {
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
"com/starxing/test/conf.xml"));
// BeanFactory ,bean factory post-processor :
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("com/starxing/test/jdbc.properties"));
cfg.postProcessBeanFactory(factory);
DriverManagerDataSource dataSource = (DriverManagerDataSource) factory.getBean("dataSource");
System.out.println(dataSource.getDriverClassName());
// ,ApplicationContext BeanFactoryPostProcessor bean。 , ApplicationContext PropertyPlaceholderConfigurer 。 , bean
// factory postprocessor ApplicationContext BeanFactroy。
ApplicationContext context = new ClassPathXmlApplicationContext("com/starxing/test/conf.xml");
DriverManagerDataSource dataSource2 = (DriverManagerDataSource) context.getBean("dataSource");
System.out.println(dataSource2.getDriverClassName());
}
}
관련 문서:
이 솔 루 션 을 사용 하면 다음 과 같은 속성 파일(/WEB-INF/jdbc.properties)을 생 성 할 수 있 습 니 다.
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/test
jdbc.user=postgres
jdbc.password=123
우리 빈 설정 은 다음 과 같 습 니 다:
위 에서 말 한 바 와 같이,우 리 는 Property Placeholder Configure 류 의 실례 를 정의 하고,그 위치 속성 을 우리 의 속성 파일 로 설정 합 니 다.이 종 류 는 빈 공장 의 백 프로세서 로 구현 되 며,모든 자리 표시 자(${...}value)대신 파일 에 정 의 된 속성 을 사용 합 니 다.
이 기술 을 이용 하여 우 리 는 applicationContext.xml 에서 호스트 에 지정 한 모든 설정 속성 을 제거 할 수 있 습 니 다.이러한 방식 을 통 해 우 리 는 호스트 속성 에 대한 동기 성 을 걱정 하지 않 고 이 파일 에 새로운 Bean 을 자 유 롭 게 추가 할 수 있 습 니 다.이렇게 하면 생산 배치 와 유 지 를 간소화 할 수 있다.
Property Placeholder Configurer 는 bean factory post-processor 로 구현 되 며,BeanFactory 정의 의 속성 값 을 다른 단독 자바 Properties 형식의 파일 에 배치 할 수 있 습 니 다.이 때문에 사용 자 는 BeanFactory 의 주 XML 정의 파일 을 복잡 하고 위험 하 게 수정 하지 않 아 도 기본 적 인 속성(예 를 들 어 데이터 뱅 크 의 url,사용자 이름과 비밀번호)을 맞 출 수 있 습 니 다.
BeanFactory 가 정의 하 는 세 션 을 고려 하여 자리 차지 문자 로 DataSource 를 정의 합 니 다.
다음 예 에서 datasource 를 정의 하고 외부 Porperties 파일 에 관련 속성 을 설정 합 니 다.실행 할 때,우 리 는 BeanFactory 에 Property Placeholder Configurer 를 제공 합 니 다.Properties 파일 의 값 으로 이 datasource 의 속성 값 을 대체 합 니 다.
실제 값 은 다른 Properties 형식의 파일 에서 나 옵 니 다:
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root
BeanFactory 에서 사용 하려 면 bean factory post-processor 를 수 동 으로 실행 해 야 합 니 다:
XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("jdbc.properties"));
cfg.postProcessBeanFactory(factory);
응용 프로그램 Context 는 그 위 에 배 치 된 BeanFactory PostProcessor 의 bean 을 자동 으로 식별 하고 응용 할 수 있 음 을 주의 하 십시오.애플 리 케 이 션 Context 를 사용 할 때 Property Placeholder Configure 를 사용 하 는 것 이 편리 하 다 는 뜻 이다.이 때문에 이 나 다른 bean factory postprocessor 를 사용 하려 는 사용 자 는 BeanFactroy 대신 ApplicationContext 를 사용 하 는 것 을 권장 합 니 다.
Property Place Holder Configure 는 지정 한 Porperties 파일 에서 속성 을 찾 을 뿐만 아니 라 사용 하고 싶 은 속성 을 찾 지 못 하면 자바 시스템 properties 에서 도 찾 을 수 있 습 니 다.이 행 위 는 설정 에 있 는 systemPropertiesMode 속성 을 설정 하여 맞 출 수 있 습 니 다.이 속성 은 세 개의 값 이 있 습 니 다.하 나 는 설정 을 항상 덮어 쓰 고 하 나 는 영원히 덮어 쓰 지 않 습 니 다.하 나 는 properties 파일 에서 만 찾 을 수 없 을 때 덮어 씁 니 다.Properties Placeholder Configurer 의 자바 독 을 참고 하여 더 많은 정 보 를 얻 으 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.