常用方法
方式一:使用spring的profile机制实现
方式二:使用maven的profile和resource机制实现,pom文件中指定或打包时候mvn clean package -P指定
方式三:通过设置tomcat的启动参数: -DenvProfile实现
方式四:通过JVM的系统属性-Dspring.profiles.active实现
方式五:系统设计时采用配置文件与程序文件分离方案,程序文件和配置文件各独立打包
实现案例
前四种网络上例子很多,我就简单说说方法五的实现案例:
1.在本地server.properties中修改env=DEV
2.Framework-Foundation(基础框架)读取本地配置文件得到环境为DEV 【配合后续架包,实现注册到对应的apollo,dubbo,cat环境】,将此传递给Pizza(配置中心)。
3.Pizza从DEV环境的Apollo(分布式配置中心)上拉取pizza.manager,得到是classpath的地址是/ST,将此传递给PApp(Pafa5应用,由Pafa5组件Sar萨尔构成)。
4.然后初始化Papp,Papp得到Pizza传递过来的classpaths是/ST,于是选择加载resources下的ST文件夹的配置文件
1)Sar的ics_pafa.spring.xml中将Bean (name=“configureResource” value="classpath:/ST/datasource.properties) 装配到Spring中。
2)PApp的ics_pafa.spring.xml中开启组件扫描,扫描com.xxx.xxx.config包
5.Spring将Bean(name=“configureResource” )注入给com.xxx.xxx.config包下的DruidDataSourceFactoryBean数据库工厂Bean。 【实现连接到对应的数据库】
备注: Framework-Foundation、Pizza、PApp均为架包