在此示例中,我们将向您展示如何在Spring MVC Web应用程序中设置活动的@Profile
。
@Profile Examples
@Configuration
public class AppConfig {
@Profile("dev")
@Bean
public CacheManager cacheManager() {
//...
}
@Profile("live")
@Bean
public EhCacheManagerFactoryBean ehCacheCacheManager() {
//...
}
@Profile("testdb")
@Bean
public DataSource dataSource() {
//...
}
}
要在Spring中设置活动的@Profile
,请通过spring.profiles.active
系统属性定义一个值。
1. web.xml
对于普通的Web应用程序,其中包含web.xml
文件。
1.1设置一个活动的配置文件。
web.xml
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>live</param-value>
</context-param>
1.2设置多个活动配置文件。
web.xml
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev, testdb</param-value>
</context-param>
2. Servlet 3.0+容器
对于Web应用程序没有web.xml
文件,请使用以下方法之一:
2.1覆盖onStartup
MyWebInitializer.java
package com.mkyong.servlet3;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
public class MyWebInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
//...
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.setInitParameter("spring.profiles.active", "live");
//Set multiple active profile
//servletContext.setInitParameter("spring.profiles.active", "dev, testdb");
}
}
2.2取决于要加载@Profile
bean的上下文(根或servlet)。
MyWebInitializer.java
package com.mkyong.servlet3;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MyWebInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
//If the @Profile beans are loaded via root context
@Override
protected WebApplicationContext createRootApplicationContext() {
WebApplicationContext context =
(WebApplicationContext)super.createRootApplicationContext();
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles("live");
//Set multiple active profiles
//((ConfigurableEnvironment)context.getEnvironment())
// .setActiveProfiles(new String[]{"live", "testdb"});
return context;
}
//If the @Profile beans are loaded via servlet context
/*
@Override
protected WebApplicationContext createServletApplicationContext() {
WebApplicationContext context =
(WebApplicationContext)super.createServletApplicationContext();
((ConfigurableEnvironment)context.getEnvironment()).setActiveProfiles("dev");
return context;
}*/
}
参考文献
标签: Spring MVC 弹簧型材
翻译自: https://mkyong.com/spring-mvc/spring-mvc-how-to-set-active-profile/