springboot-day02
自动配置
1.Condition:选择性创建Bean
注解**@Conditional**(条件类.class) : 通过一些条件判断来决定Bean是否被IOC容器创建
括号中的条件类必须实现Condition接口,并且重写matches方法,如果返回值为true,则Bean由IOC容器创建;否则不创建。
/**
*
* @param context 上下文对象。用于获取环境,IOC容器,ClassLoader对象
* @param metadata 注解元对象。 可以用于获取注解定义的属性值
* @return
*/
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
}
可以自定义注解来动态的判断Bean,自定义的注解类一定要使用原来的注解,即@Condition,然后还需要使用@Condition注解类中使用的注解:分别是
------------@Target({ElementType.TYPE, ElementType.METHOD})
| 该注解表示可以加到哪个范围上,这里是类(TYPE)和方法(METHOD)
元注解---------------@Retention(RetentionPolicy.RUNTIME)
| 该注解表示生效的时机是RUNTIME,运行时期
------------@Documented
该注解表示生成JavaDoc的文档
springboot中提供了大量的**@ConditionalOn…注解**,可以实现不同功能的自动配置,比如说@ConditionalOnProperty(name = “itcast”, havingvalue = “root”) 表示即当配置文件中有键为itcast,值为root的时候使用该注解的Bean会被IOC容器自动创建
2.@Import注解
@Enable…注解是自动配置的关键要素,用于动态启用某些功能,该类注解底层原理使用了@Import注解来导入一些配置类(@Configuration),从而实现Bean的动态加载
@Import注解的四种用法:
1.直接导入Bean
2.导入配置类,配置类中的所有Bean都会被导入其中
3.导入ImportSelector的实现类,一般用于加载配置文件中的类
4.导入ImportBeanDefinitionRegistrar的实现类
3.核心注解
@SpringBootApplication
-->@EnableAutoConfiguration
-->@Import(AutoConfigrationImportSelector.class)
配置文件位置:META-INF/spring.factories,该文件中定义了大量的配置类,当springboot应用启动时,会自动加载这些配置类,初始化Bean,但并不是所有的Bean都会被初始化,再配置类中使用Condition来加载满足条件的Bean
切换内置web服务器
springboot的web环境中默认使用tomcat作为内置的服务器
java提供了四种web环境的服务器:Jetty,Netty,Tomcat,Undertow
java中还实现了一个自动配置的配置类来对四种服务器的使用进行了实现,我们只需要在pom.xml文件中导入服务器相应的坐标就可以切换为相应的服务器(先排除tomcat的依赖,再引入其他服务器的依赖)
监听机制
1.针对于对象的监听。
java定义了四个监听器接口:
ApplicationContextInitializer, (放到IOC容器并且需要去META-INF/spring.factories配置文件中配置相应信息)
SpringApplicationRunListener, (放到IOC容器并且需要去META-INF/spring.factories配置文件中配置相应信息,还需要提供一个构造器,其中SpringApplication是项目启动时的事件源,可以产生很多个不同生命周期的相关事件)
public MySpringApplicationRunListener(SpringApplication application, String[] args) {
}
CommandLineRunner, (放到IOC容器中就可以直接执行其实现类的方法)
ApplicationRunner (放到IOC容器中就可以直接执行其实现类的方法)
2.springboot监控插件
需要导入依赖坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
访问http://localhost:8080/acruator
#拓展==>在线json格式网站:json.cn
ui可视化界面工具:Spring Boot Admin
有两个角色:客户端(client),服务端(server)
应用程序作为 Spring Boot Admin Client 向 Spring Boot Admin Server 注册
Spring Boot Admin Server 的UI界面将 Spring Boot Admin Client 的 Actuator Endpoint 上的一些监控信息
需要创建两个模块:一个server可以服务多个client
admin-server:
1.导入相关依赖坐标
2.在引导类上启用监控功能@EnableAdminServer
admin-client:
1.导入相关依赖坐标
2.配置相关信息:server地址等
3.启动server和client服务,访问server
项目部署
jar包(官方推荐)(默认:springboot内置了tomcat)
war包:
1.引导类需要继承 SpringBootServletInitializer 类,并且重写 configure方法
2.pom.xml文件需要加一句打包语句war