1.SpringBoot 监听机制
监听机制也是SpringBoot 比较核心的内容了下面分别会讲一下监听内容和时机
1.1 ApplicationRunner
@Component
public class MyApplicationRunner implements ApplicationRunner {
//这边的args就是main 函数的用法
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("MyApplicationRunner....run");
System.out.println(Arrays.asList(args.getSourceArgs()));
}
}
1.2 CommandLineRunner
@Component
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner....run");
System.out.println(Arrays.asList(args));
}
}
1.3 ApplicationContextInitializer
public class MyApplicationContextInitializer implements ApplicationContextInitializer {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("MyApplicationContextInitializer......initialize");
}
}
当然这样做并不能够让SpringBoot 对其监听必须还要配置一个文件才行
当然不同的SpringBoot版本写法是不一样的请注意本人使用的SpringBoot版本是2.1.8
1.4 SpringApplicationRunListener
这边与1.3 差不多的思路配置完成就好了!
public class MySpringApplicationRunListener implements SpringApplicationRunListener {
public MySpringApplicationRunListener(SpringApplication application, String[] args) {
}
@Override
public void starting() {
System.out.println("starting");
}
@Override
public void environmentPrepared(ConfigurableEnvironment environment) {
System.out.println("environmentPrepared");
}
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
System.out.println("contextPrepared");
}
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
System.out.println("contextLoaded");
}
@Override
public void started(ConfigurableApplicationContext context) {
System.out.println("started");
}
@Override
public void running(ConfigurableApplicationContext context) {
System.out.println("running");
}
@Override
public void failed(ConfigurableApplicationContext context, Throwable exception) {
System.out.println("failed");
}
}
上面就是Springboot基本监听机制
2.actuator监控模块
先老样子引入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
下面就是直接访问你自己的项目地址,下面就是你自己的项目信息
当然还有很多其他的功能这边就不列举了。
3.spring-boot-admin
这个实际上就是监控模块的图形化界面
3.1 服务端
引入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
@SpringBootApplication
//开启监控
@EnableAdminServer
public class SpringAdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringAdminServerApplication.class, args);
}
}
3.2 服务端
引入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
配置文件配置服务端
//服务端地址
spring.boot.admin.client.url=http://localhost:9000
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
最终启动之后的画面
当然idea 里面也有相关的功能,不需要借助这个可视化项目
4.SpringBoot 项目 打包
一般来说Springboot项目默认的打包方式就是jar
这边讲的就是如何打包成war
//打包成war之前要继承SpringBootServletInitializer然后重写configure方法
@SpringBootApplication
public class ApplicationListener extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ApplicationListener.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ApplicationListener.class);
}
}
第二部就是改一下pom 的配置
打包完成之后就是这个样子,这边要说明一点的是,这个war包需要外部tomcat 启动。jar可以用内置服务器启动。