(1) 환경과 프로필
예 : 데이터베이스 구성
A : @Bean 사항으로 EmbeddedDatabaseBuilder을 통해 데이터 소스를 만들
@Bean (destroyMethod = "종료") 공공 데이터 소스 데이터 소스 () { ) 새로운 EmbeddedDatabaseBuilder를 (반환 : .addScript ( "schema.sql 클래스 경로") : .addScript ( "시험 data.sql 클래스 경로") ) (.build을; }
이 콩은 가장 흥미 만드는 방법입니다, 콩의는 javax.sql.DataSource 유형을 만듭니다. EmbeddedDatabaseBuilder는 임베디드, schema.sql에 정의 된 스키마 (스키마), 테스트 데이터는 테스트 data.sql을 통해로드 구축 할 것입니다 사용하여 극 초음속으로 데이터베이스.
B : 인 JndiObjectFactoryBean 의해 만들어진
@Bean 공용 데이터 소스 데이터 소스 () { 인 JndiObjectFactoryBean 인 JndiObjectFactoryBean = 새로운 JndiOjbectFactoryBean (); jndiObjectFactoryBean.setJndiName ( "JDBC / MYDS"); jndiObjectFactoryBean.setResourceRef (TRUE); jndiObjectFactoryBean.setProxyInterface (javax.sql.DataSource.class); 창 (데이터 소스) jndiObjectFactoryBean.getObject (); }
JNDI 데이터 소스를 획득하는 것은 허용함으로써 컨테이너는이 데이터 소스를 생성하는 방법을 결정, 심지어 컨테이너 관리 연결 풀로 전환.
C : BasicDataSource의 데이터베이스 구성
@Bean (destroyMethod = "닫기") 공용 데이터 소스 데이터 소스 () { BasicDataSource의은 dataSource = 새로운 BasicDataSource의 (); dataSource.setUrl ( "JDBC : H2 : TCP : //는 dbserver / ~ / 테스트"); dataSource.setDriverClassName ( "org.h2.Driver"); dataSource.setUsername ( "SA"); dataSource.setPassword ( "비밀번호"); dataSource.setInitialSize (20); dataSource.setMaxActive (30); 데이터 소스를 반환; }
세 가지 이상의 서로 다른의 javax.sql.DataSource 생성 된 콩 방법. 빌드 단계 중에 배포 할 수있는 응용 프로그램을 컴파일 할 구성을 결정하기 위해 (당신은 메이븐 프로파일을 사용할 수 있습니다).
세 가지 방법으로 당신이 응용 프로그램을 다시 구축하려는 환경의 각 유형에 대한 그 위의 질문.
소개 프로필
자바 구성에서, 당신은 빈에 속한 프로파일 지정 @profile 주석을 사용할 수 있습니다. 예를 들어, 서로 다른 환경에서의 프로파일의 복수의 빈은 조립 될 이는 해당 프로파일에 따라 활성화되도록 결정된다.
@Configuration 공용 클래스 DataSourceConfig { @Bean (destroyMethod = "종료") @profile ( "DEV") 공공 데이터 소스 embeddedDataSource는 () { 새로운 EmbeddedDatabaseBuilder를 (반환) .setType (EmbeddedDatabaseType.H2) .addScript ( "클래스 경로 : schema.sql" ) .addScript ( "클래스 경로 테스트 데이터 SQL") .build (); } @Bean @profile ( "자극") 공용 데이터 소스 jndiDataSource () { 인 JndiObjectFactoryBean 인 JndiObjectFactoryBean = 새로운 인 JndiObjectFactoryBean (); jndiObjectFactoryBean.setJndiName ( "JDBC / MYDS"); jndiObjectFactoryBean.setResourceRef (TRUE); jndiObjectFactoryBean.setProxyInterface (javax.sql.DataSource.class); 창 (데이터 소스) jndiObjectFactoryBean.getObject (); } }
@profile 위의 의견으로 빈의 정의는 서로 다른 상황에서 다른 만들 수 있습니다. 어떤 특정 빈은 활성화 된 프로파일에 따라 결정, 생성된다.
활성화 프로필
활성화 된 프로파일을 결정하는 봄, 두 개의 분리 된 속성에 의존해야합니다 spring.profiles.active 및 spring.profiles.default을.
이 두 가지 속성을 설정하는 방법은 여러 가지가 있습니다 :
DispatcherServlet으로의 초기화 매개 변수;
웹 애플리케이션 컨텍스트 매개 변수로;
JNDI 항목으로;
환경 변수로;
JVM 시스템 특성으로;
통합 테스트 클래스에서 @ActiveProfiles에게 주석 설정을 사용.
예 :
사용 DispatcherServlet이 매개 변수는 프로파일 개발 환경을 spring.profiles.default합니다
web.xml에
<상황 PARAM> <PARAM 이름> spring.profiles.default <PARAM 이름> <PARAM 값> DEV </ PARAM 값> <컨텍스트 PARAM> <서블릿> <서블릿 이름> appServlet </ servlet- 이름> <서블릿 클래스> org.springframework.web.servlet.DispatcherServlet <서블릿 클래스> <INIT-PARAM> <PARAM 이름> spring.profile.default </ PARAM 이름> <PARAM 값> DEV </ PARAM 값> </ INIT-PARAM> <시작시로드> 1 </ 시작시로드> </ 서블릿>
spring.profiles.active과의 spring.profiles.default 이용 프로파일은 다수의 형태이다. 이것은 동시에 달성 쉼표로 구분 된 여러 프로파일 이름을 나열 할 수있는 다수의 프로파일을 활성화 할 수있는 것을 의미한다.
프로필 테스트를 사용하여
봄은 우리가 테스트를 실행하는 동안 활성화 될 수있는 프로파일을 지정하는 데 사용할 수 있습니다 @ActiveProfiles 노트를 제공합니다.
@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (클래스 = {PersistenceTestConfig.class}) @ActiveProfiles ( "DEV") 공용 클래스 PersistenceTest { ......... }
창조 콩 매개 변수 @ActiveProfiles 주석은 어떤 상황에서 지정