在项目的开发中,有些配置文件在不一样的环境(开发、测试、生成)中配置信息是不一样的,例如数据库链接信息、Redis配置信息、日志控制级别等等都是不一样的,那么就须要咱们再项目中根据不一样的环境配置不一样的配置信息,作到不一样的环境配置不一样的配置,作到各个环境配置隔离。java
在 Spring Boot 中多环境配置文件名须要使用 【application-{profile}.properties】或web
【application-{profile}.yml】的格式,这里 {profile} 对应的是不一样的环境标识。spring
如数据库
application-test.properties 或 application-test.ymljson
application-prod.properties 或 application-prod.yml安全
需求:markdown
测试环境服务端口:8081,生产环境端口:8082,如何进行实现app
建立对应环境的配置文件框架
application-test.yml 和 application-prod.ymlide
application-test.yml配置文件内容:
server: port: 8081
application-prod.yml配置文件内容:
server: port: 8082
application.yml激活对应环境配置
spring: profiles: active: prod
测试
java -jar learn.jar --spring.profiles.active=test
不一样的环境启动脚本中激活不一样的配置便可。
注解 | 说明 |
---|---|
@SpringBootApplication | 组合注解:等价于@Configuration、@EnableAutoConfiguration、@ComponentScan |
@EnableAutoConfiguration | 启用自动配置功能 |
@ComponentScan | 组件扫描,可自动发现和装配一些Bean |
@Import | 导入其余配置类 |
@Bean | 至关于Spring中xml中的bean标签 |
@Configuration | 标记该类为配置类,等价于Spring中xml配置文件 |
@ConditionalOnMissingBean | 未在类路径下中找到对应Bean执行 |
@ConditionalOnBean | 在类路径下中找到对应Bean执行 |
@ConditionalOnProperty | 在全局配置文件中找到对应属性执行 |
@ConditionalOnMissingClass | 未在类路径下中找到对应的Class执行 |
@ConditionalOnClass | 在类路径下中找到对应的Class执行 |
@RestController | 组合注解,等价于@Controller、@ResponseBody |
@Autowired | Spring 依赖注入Bean,基于类型byType |
@Qualifier | 当容器中有多个同类型的Bean,经过该注解来指定,与@Autowired结合使用 |
@Service | 业务类 |
@Component | 组件类 |
@Repository | 数据访问层 |
当线上某个应用须要升级部署时,经常简单粗暴地使用 kill 命令,这种中止应用的方式会让应用将全部处理中的请求丢弃,响应失败。这样的响应失败尤为是在处理重要业务逻辑时须要极力避免的,那么久须要平滑的关闭。
Spring Boot 框架提供健康监控依赖启动器,能够对Spring Boot服务进行监控,优雅停服等功能
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
# 开启Spring Boot优雅关闭 management.endpoint.shutdown.enabled=true # 暴露shutdown端点 management.endpoints.web.exposure.include=shutdown # 自定义管理端点的前缀(保证安全) management.endpoints.web.base-path=/me-actuator # 自定义actuator端口 management.server.port=12581 # 不容许远程管理链接(不容许外部调用保证安全) management.server.address=127.0.0.1
执行 kill -9 / 或者 Ctrl+C操做,或者请求接口
http://localhost:12581/me-actuator/shutdown
返回数据
{"message":"Shutting down, bye..."}
说明优雅关闭成功