springboot 中如何实现多环境配置,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为蔚县企业提供专业的网站设计、做网站,蔚县网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
目录
功能描述
具体配置及细节
打包过滤
功能描述
有些时候,一个项目需要适配多种开发环境,如数据库不同(MySQL、oracle、db2等)、如开发环境不同(dev、pro、test)等不同的环境需要指定不同的配置。这种情况下,我们就可以采用配置Profiles来控制。在启动的时候指定不同的配置组合,maven进行build时会自动选择指定配置。
具体配置及细节
首先配置在pom中配置Profiles配置
mysql mysql oracle oracle db2 db2 dev dev prd prd
springboot中application.yml 中可以引用pom中的变量properties属性,引用的方式 **@变量@**
mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: [mybatis/**/**@spring.profiles.active@**/*Mapper.xml] type-aliases-package: com.*.*.domain.entity,com.*.*.system.entity
建立不同环境的配置文件,并以目录的形式区分(当然也可以以不同的开头命名区分)
以下是多环境配置的目录结构
以下是多数据库的配置,在每个环境application中配置
@Configuration
public class DatasourceConfig{
@Resource
Environment env;
@Bean
@Profile(value="mysql")
public DataSource mysql(){
return dataSources("mysql");
}
@Bean
@Profile(value="oracle")
public DataSource oracle(){
return dataSources("oracle");
}
@Bean
@Profile(value="db2")
public DataSource db2(){
return dataSources("db2");
}
/**
* 获取数据源
* @param type (mysql,oracle,db2 ....)
*/
public DataSource dataSources(String type) {
String driverClassName = env.getProperty("mydatasource."+type+".driver-class-name");
String url = env.getProperty("mydatasource."+type+".url");
String username = env.getProperty("mydatasource."+type+".username");
String password = env.getProperty("mydatasource."+type+".password");
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setName(type);
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
//TODO .....
return druidDataSource;
}
}打包过滤
资源过滤 pom.xml build标签下
src/main/resources true/false src/main/resources config/ mybatis/ src/main/resources/config/${package.environment} config.properties src/main/resources mybatis/**/${spring.profiles.active}/** org.apache.maven.plugins maven-jar-plugin com/yuyi/imap/ServletInitializer.class
配置profiles 多环境打包过滤
mysql mysql jar org.springframework.boot spring-boot-starter-quartz mysql mysql-connector-java 5.1.43 org.apache.maven.plugins maven-jar-plugin com/yuyi/imap/oracle/* com/yuyi/imap/db2/* oracle oracle war org.apache.maven.plugins maven-war-plugin WEB-INF/classes/com/yuyi/imap/mysql/, WEB-INF/classes/com/yuyi/imap/db2/ org.apache.maven.plugins maven-jar-plugin com/yuyi/imap/mysql/ com/yuyi/imap/db2/*
同一个接口,不同的实现可以通过重名和注解实现

同一个接口有两种实现,并且采用同一个命名,这样在启动的时候会报错(别名重复)所以需要将不用的目录给排除掉,不编译成class,这里采用idea
这么做只会影响springboot启动的时候,打包的时候不受此影响。
打包时指定profile 就可以将不同环境的资源文件和java代码以及jar排除掉,最小打包。
看完上述内容,你们掌握springboot 中如何实现多环境配置的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享文章:springboot中如何实现多环境配置
文章URL:http://www.jxjierui.cn/article/pgdjod.html


咨询
建站咨询




