Spring Boot 经常使用注解、Profiles、优雅停服说明

2.1.9 Profiles

在项目的开发中,有些配置文件在不一样的环境(开发、测试、生成)中配置信息是不一样的,例如数据库链接信息、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

  1. 建立对应环境的配置文件框架

    application-test.yml 和 application-prod.ymlide

    application-test.yml配置文件内容:

    server:
     port: 8081

    application-prod.yml配置文件内容:

    server:
     port: 8082
  2. application.yml激活对应环境配置

    spring:
     profiles:
       active: prod
  3. 测试

    java -jar learn.jar --spring.profiles.active=test

    不一样的环境启动脚本中激活不一样的配置便可。

2.1.10 经常使用注解

注解 说明
@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 数据访问层

2.1.11 优雅关闭

当线上某个应用须要升级部署时,经常简单粗暴地使用 kill 命令,这种中止应用的方式会让应用将全部处理中的请求丢弃,响应失败。这样的响应失败尤为是在处理重要业务逻辑时须要极力避免的,那么久须要平滑的关闭。

Spring Boot 框架提供健康监控依赖启动器,能够对Spring Boot服务进行监控,优雅停服等功能

2.1.11.1 引入依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
2.1.11.2 添加配置
# 开启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
2.1.11.3 测试

执行 kill -9 / 或者 Ctrl+C操做,或者请求接口

http://localhost:12581/me-actuator/shutdown

返回数据

{"message":"Shutting down, bye..."}

说明优雅关闭成功

相关文章
相关标签/搜索