(A) 스프링 고급 조립 - @ 프로필

(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 주석은 어떤 상황에서 지정

 

추천

출처www.cnblogs.com/lin-bunny/p/11496223.html