美文网首页
Spring boot 在项目中的应用-部署(二)

Spring boot 在项目中的应用-部署(二)

作者: 咦咦咦萨 | 来源:发表于2018-08-05 21:09 被阅读0次

1. Spring boot 项目启动事件

现在有部分资源,需要在项目启动后进行预加载。这就需要在Spring 环境准备好之后,加入自动执行的事件。

@Component
@Slf4j
public class CertConfigManagerInitListener implements ApplicationListener<ContextRefreshedEvent> {

    @Autowired
    private CertConfigManager certConfigManager;

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        // 只在root application context初始化完成后调用逻辑代码,否则会在servlet context初始化后再次调用
        if(contextRefreshedEvent.getApplicationContext().getParent() == null) {
            long start = System.currentTimeMillis();
            // TODO: 初始化代码
            log.info("完成,耗时:{} 毫秒", (end - start));
        }
    }
}

  1. 以Jar包形式运行
# 同步运行
java -jar test-restful-service.jar 

# 后台运行
nohup java -jar test-restful-service.jar &

# 关闭
ps aux | grep test-restful-service | xargs kill -9
  1. 优雅停机
    通过kill -9 杀掉进程,使web容器不能关闭相关的资源,那么还有一种更加优雅的方式来停止容器的运行。

3.1 通过Spring boot Actuator提供的端点优雅停机

添加依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

在application.yml配置文件中添加端点

endpoints:
  #启用shutdown
  shutdown:
    enabled: true
    #禁用密码验证
    sensitive: false

之后,我们可以通过POST方式访问http://yourIP:port/shutdown来关闭web容器。

4. 安全认证

集成SpringSecurity进行安全认证和权限管理。

4.1 添加依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

4.2 配置application.yml

security:
  basic:
    # 启用基础认证
    enabled: false
    # 安全路径列表,逗号分隔,此处只针对/admin路径进行认证
    path: /admin
  user:
    # 认证使用的用户名
    name: admin
    # 认证使用的密码。 默认情况下,启动时会记录随机密码。
    password: 123456

management:
  # actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
  port: 7778
  # actuator暴露接口的前缀
  context-path: /admin
  security:
    # actuator是否需要安全保证
    enabled: true
    # 可以访问管理端点的用户角色列表,逗号分隔
    roles: SUPERUSER

之后,可通过一下命令来执行优雅关机

curl -u admin:123456 -X POST yourIP:7778/admin/shutdown

参考&扩展:
https://www.jianshu.com/p/af9738634a21
https://www.jianshu.com/p/bcebf8921919

相关文章

网友评论

      本文标题:Spring boot 在项目中的应用-部署(二)

      本文链接:https://www.haomeiwen.com/subject/vacivftx.html