가능한 한 Java 코드에 많은 스프링 구성을 포함하려는 응용 프로그램을 작성하기 시작했습니다. 내가 겪게되는 문제는 속성 파일 때문입니다.스프링 코드 기본 구성에서 등록 정보 파일을 올바르게 처리하는 방법
파일 포함 콩 선언 : 지금까지 writen 한 내용을 살펴 보자
@Configuration
@ImportResource("classpath:properties-configuration.xml")
public class ContextConfigutarion {
@Value("${database.url}")
private String database_url;
@Value("${database.user}")
private String database_user;
@Value("${database.password}")
private String database_password;
@Value("${database.default.shema}")
private String database_default_shema;
@Bean
public BasicDataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(com.mysql.jdbc.Driver.class.getName());
dataSource.setUrl(database_url);
dataSource.setUsername(database_user);
dataSource.setPassword(database_password);
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setHibernateProperties(hibernateProperties); // <- here I encountered a problem
return sessionFactory;
}
...
}
특성-의 configuration.xml는 파일 속성의 위치를 지정에만 사용 최소 necessery 파일입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:database.properties" />
</beans>
sessionFactory 객체를 구성하기 시작했을 때 문제가 있음을 발견했습니다. ContextConfiguration 클래스에서 이해할 수 있듯이, database.properties 파일의 모든 속성을 뺄 필요가 있습니다. 응용 프로그램에 많은 등록 정보가 있으면 구성 Java 코드가 중복 적으로 커집니다. Spring을 통해 속성을 모든 컴포넌트를 추출하지 않고 구성 요소로 전송하는 더 좋은 방법은 없을까요?
두 번째 관련 질문 : 트리 구조와 같은 응용 프로그램 속성을 유지하는 좋은 방법은 무엇입니까? 위의 예제에서 볼 수 있듯이 응용 프로그램 속성에는 데이터 소스 속성, 최대 절전 모드 속성 등이 포함되어 있습니다.이 속성은 실제로 속성 트리입니다. 내 응용 프로그램이 더 크고 더 많은 구성 요소가 트리 구조와 같은 속성을 보존하면 위대 할 수 있습니다. 나는 특성이 그렇게 카탈로그에 저장 한 나는 이미지 : 나는 application.properties을 요구하는 경우 나 최대 절전 모드를 요청할 경우
/application
/hibernate
filename.properties
/database
filename.properties
/someOddComponent
/someStrangeComponent
filename.properties
filename.properties
filename.properties
그래서 나는 모든 .properties의 응용 프로그램 디렉토리에있는 파일 (및 하위 카탈로그)에 대한 합계를 가지고 whould .properties 모든 .properties 파일에 대한 합계가 whould get 디렉토리 (및 하위 카탈로그) 등. 여기에 내가 문제를 과장했을 수도 있습니다. 어떻게 생각하십니까?