博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot中spring.profiles.active来引入多个properties文件 & Springboot获取容器中对象
阅读量:5105 次
发布时间:2019-06-13

本文共 3280 字,大约阅读时间需要 10 分钟。

1.    引入多个properties文件

  很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置

  spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

  profile的配置文件可以按照application.properties的放置位置一样,放于以下四个位置,

当前目录的 “/config”的子目录下

当前目录下
classpath根目录的“/config”包下
classpath的根目录下

 

常见的应用场景

1.    多环境切换

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  application-dev.properties:开发环境
  application-test.properties:测试环境
  application-prod.properties:生产环境

我们在总的applications.properties文件中可以通过下面切换:

spring.profiles.active=dev

 

2.    我们进行分模块开发的时候如下:

  在dao层的模块中有下面配置:    application-dao.properties

内容如下:

############################################################## Mybatis settings##############################################################jiazai mybatis peizhiwenjian(**代表任意目录,*代表任意多个字符)mybatis.mapper-locations = classpath:mapper/**/*Mapper.xmlmybatis.config-location = classpath:mybatis/SqlMapConfig.xmlmybatis.type-aliases-package = cn.qlq.bean############################################################## datasource settings#############################################################spring.datasource.driver-class-name= com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = 123456

 

我们在总的applications.properties文件可以通过下面方式引入上面properties文件:

spring.profiles.active=dao

 

2.获取容器中对象

  直接像在spring中获取会NPE异常。需要改装成下面工具类:

package cn.qs.utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;@Componentpublic class SpringBootUtils implements ApplicationContextAware {    private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        SpringBootUtils.applicationContext = applicationContext;    }    public static Object getBean(String beanName) {        return applicationContext.getBean(beanName);    }    public static 
T getBean(Class
beanClass) { return applicationContext.getBean(beanClass); } public static
T getBean(String beanName, Class
beanClass) { return applicationContext.getBean(beanName, beanClass); }}

进一步封装成如下工具类:

package cn.qs.utils;import org.springframework.web.context.ContextLoader;import org.springframework.web.context.WebApplicationContext;public class SystemUtils {    private SystemUtils() {    }public static 
T getContextBean(Class
clazz) { WebApplicationContext currentWebApplicationContext = ContextLoader.getCurrentWebApplicationContext(); T bean = currentWebApplicationContext.getBean(clazz);// 根据类型获取对象 return bean; }}

 

 

使用方法:

UserHealthService userHealthService = SpringBootUtils.getBean(UserHealthService.class);

 

转载于:https://www.cnblogs.com/qlqwjy/p/10552635.html

你可能感兴趣的文章
DataTable 导到Excel
查看>>
mkdir() Permission denied 报错问题
查看>>
PHP 多线程采集
查看>>
C# 采用HttpWebRequest 自定义头信息 上传文件
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
字典和Model的互转
查看>>
Dot Product
查看>>
1200
查看>>
京东笔试编程题:采购单+保卫方案
查看>>
PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。
查看>>
[转]Linux进程间通信——使用信号
查看>>
jenkins 安装配置
查看>>
为DataGrid添加自定义DataGridColumn类的例子
查看>>
j-1修改元素样式
查看>>
D-1修改元素样式
查看>>
SIFT 尺度不变特征变换算法
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (17) -----第三章 查询之分页、过滤和使用DateTime中的日期部分分组...
查看>>
如何优雅的打开文件
查看>>
DEDE有无缩略图如何调取
查看>>
[转] Nook Glowlight Plus入门指南(Root及相关软件设置)
查看>>