如何使用Spring逻辑忽略JavaEE数据源?
我有一个JavaEE数据源,如果设置了属性,我只想调用它。可以将系统属性或vm参数设置为仅使用此JavaEE数据源(如果为true)。Spring试图在服务器启动时连接到此jndi数据源,但我需要控制何时进行此连接。因此,在某些情况下,Spring不应该尝试连接到datasource“myDataSource”。以下是我的上下文文件中的配置:如何使用Spring逻辑忽略JavaEE数据源?,java,spring,Java,Spring,我有一个JavaEE数据源,如果设置了属性,我只想调用它。可以将系统属性或vm参数设置为仅使用此JavaEE数据源(如果为true)。Spring试图在服务器启动时连接到此jndi数据源,但我需要控制何时进行此连接。因此,在某些情况下,Spring不应该尝试连接到datasource“myDataSource”。以下是我的上下文文件中的配置: <jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" resource-
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
我是否可以使用spring表达式来控制此操作:
在这里阅读接受的答案:
我可以使用vm参数来指示是否应该使用jndi数据源?这似乎是一个很好的例子 您需要将
放入配置文件中,并仅在需要时激活它
然后,您可以使用内置系统属性(
spring.profiles.active
)来激活必要的配置文件,或者在基于某些自定义属性的存在初始化应用程序上下文时手动激活它们(如果您有一个web应用程序,则需要使用它来自定义应用程序上下文初始化).这似乎是一个很好的案例
您需要将
放入配置文件中,并仅在需要时激活它
然后,您可以使用内置系统属性(
spring.profiles.active
)来激活必要的配置文件,或者在基于某些自定义属性的存在初始化应用程序上下文时手动激活它们(如果您有一个web应用程序,则需要使用它来自定义应用程序上下文初始化).一种方法是使用SpringBean配置文件,将数据源bean设置为在特定配置文件处于活动状态时激活,如下所示:
<beans profile="myprofile">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
</beans>
<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>
激活此配置文件有多种方法,如果您有Web应用程序,可以通过以下方式激活:
<beans profile="myprofile">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
</beans>
<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>
调度员
org.springframework.web.servlet.DispatcherServlet
spring.profiles.active
我的个人资料
一种方法是使用SpringBean配置文件,将数据源bean设置为在特定配置文件处于活动状态时激活,方法如下:
<beans profile="myprofile">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
</beans>
<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>
激活此配置文件有多种方法,如果您有Web应用程序,可以通过以下方式激活:
<beans profile="myprofile">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb"
resource-ref="true" expected-type="javax.sql.DataSource" />
</beans>
<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>
调度员
org.springframework.web.servlet.DispatcherServlet
spring.profiles.active
我的个人资料
我想您需要的是spring配置文件。它们是这样使用的:
<beans profile="dev">
<!-- ... -->
</beans>
<beans profile="prod">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" />
</beans>
然后启用一个或多个具有系统属性的配置文件:
-Dspring.profiles.active=dev
。这是在Spring3.1中提供的。我想您需要的是spring配置文件。它们是这样使用的:
<beans profile="dev">
<!-- ... -->
</beans>
<beans profile="prod">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" />
</beans>
然后启用一个或多个具有系统属性的配置文件:-Dspring.profiles.active=dev
。这在Spring3.1中可用