2013-06-28 1 views
0

속성이 설정된 경우 호출하려는 자바 EE 데이터 소스가 있습니다. 이 Java EE 데이터 소스가 true 인 경우 해당 시스템을 사용하기 위해 시스템 등록 정보 또는 VM 인수를 설정할 수 있습니까? Spring은 서버 시작시이 jndi 데이터 소스에 연결하려고 시도하지만이 연결이 이루어질 때 제어해야합니다. 따라서 특정 상황에서 Spring은 "myDataSource"데이터 소스에 연결하려고 시도해서는 안됩니다.Spring 논리를 사용하여 Java EE 데이터 소스를 무시하는 방법?

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html

여기 허용 대답을 읽기 :

Conditional statement inside Spring config 것은 내가 할 수 있습니다

<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" 
     resource-ref="true" expected-type="javax.sql.DataSource" /> 

내가이를 제어하는 ​​스프링 표현식을 사용할 수 있습니다 : 여기 내 상황에 맞는 파일 내의 설정입니다 jndi 데이터 소스를 사용해야 하는지를 나타 내기 위해 vm 인자를 사용 하는가?

답변

1

원하는 것은 스프링 프로파일입니다.

<beans profile="dev"> 
    <!-- ... --> 
</beans> 
<beans profile="prod"> 
    <jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" /> 
</beans> 

을 그리고 당신은 시스템 특성을 가진 하나 개 이상의 프로파일 수 : 그들은 이런 식으로 사용하고 -Dspring.profiles.active=dev합니다. 이것은 봄 3.1에서 사용 가능하게되었다.

1

Spring profiles의 경우에 적합합니다.

<jee:jndi-lookup>을 프로필에 넣고 필요할 때만 활성화해야합니다.

그런 다음 기본 제공 시스템 속성 (spring.profiles.active)을 사용하여 필요한 프로필을 활성화하거나 일부 사용자 정의 속성이있는 경우 응용 프로그램 컨텍스트를 초기화 할 때 수동으로 활성화 할 수 있습니다 (웹 응용 프로그램이있는 경우 응용 프로그램 컨텍스트 초기화를 사용자 정의하려면 ApplicationContextInitializer을 사용하십시오.

<beans profile="myprofile"> 
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" 
     resource-ref="true" expected-type="javax.sql.DataSource" /> 
</beans> 

이 프로필을 활성화하기 위해 여러 가지 방법이 있습니다 당신이 경우 :

1

한 가지 방법은 특정 프로필, 이런 식으로 활성화 될 때 활성화 할을, 봄 빈 프로파일을 사용하여 데이터 소스 빈을 설정 될 수있다 이 방법으로 활성화 할 수있는 웹 응용 프로그램이 있습니다.

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>spring.profiles.active</param-name> 
     <param-value>myprofile</param-value> 
    </init-param> 
</servlet> 
관련 문제