用了很多年的spring,却发现只会用spring 的 ioc。
换了一个项目,发现竟然不用来回切换测试环境和正式环境,很纳闷,就先把这个问题记在那。就在昨天听颜群老师的spring课程的时候,听到了环境切换这一章节,然后一举探索了我们项目里的环境切换。做开发的都能理解,搞明白一个问题后的哪种激动和喜悦,于是乎大半夜12点,我在屋里唱起了歌,哈哈哈哈哈哈哈。
因为配置文件用的太久了,或者说现在基本都用注解了。所以我选听的课程都是注解相关的。颜群老师讲解环境切换,是讲了两种方式,一种是方法上加@Profile,另一种是纯粹代码方式的。代码方式先不提,@Profile这个借助于idea做的测试。
我查了一下,找到了这篇文章:https://www.cnblogs.com/bigbigbigo/p/8367958.html。文章的博主是在web.xml中激活对应的profile,但是我们项目里并没有。我猜测是tomcat。一系列百度,最后验证了果真是tomcat。
总结一下配置文件 ,还有方法注解。
spring配置文件,在<beans profile="test"></beans> 、<beans profile="prod"></beans>,然后在tomcat的配置文件catalina.sh中,测试环境:JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=test",正式环境:JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=test"。这个:spring.profiles.active来指定激活环境 。如果没有指定激活环境,只创建那些未对应环境的bean,指定了激活环境后,指定哪个环境,就激活哪个环境的bean。
或者是@Profile注解,
@Profile("testProfile")
@Bean
public Environment testEnvironment(){}
@Profile("prodProfile")
@Bean
public Environment prodEnvironment(){}
同样是如果未指定激活环境,只创建那些未标识环境的bean。如果指定了激活环境,指定哪个就创建哪个bean。
4万+

被折叠的 条评论
为什么被折叠?



