目标
- 理解SpringBoot的【自动配置原理】
- 掌握自定义起步依赖(加强自动配置理解)
- 常用注解
@springbootapplication
@conditionnal**
@enable**
@configuration - SpringBoot启动流程(了解)
- 了解SpringBoot监控
- 掌握SpringBoot的部署
1、SpringBoot
是一个基于spring的框架。目的:提高开发的效率,解决之前的问题:依赖的问题,jar包冲突的问题,配置文件过多的问题。。
自动配置。
如何实现自动配置的呢?
2、演示是否 加入redis的起步依赖,就能直接获取redis的对象,如果不加起步依赖,就不能获取redis的对象
<!--redis的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
@SpringBootApplication
public class SpringbootDay02Demo01Application {
public static void main(String[] args) {
//1、如果添加了redis的起步依赖就能从spring容器直接获取RedisTemplate对象
//2、如果没有添加redis的起步依赖,就不能从spring容器中获取RedisTemplate对象
ConfigurableApplicationContext context = SpringApplication.run(SpringbootDay02Demo01Application.class, args);
//从容器中获取RedisTemplate
Object redisTemplate = context.getBean("redisTemplate");
System.out.println("redisTemplate = " + redisTemplate);
//redisTemplate = org.springframework.data.redis.core.RedisTemplate@1a87b51
}
}
如果不加redis的起步依赖,获取则报错NoSuchBeanDefinitionException
3、自定义需求
有user对象,当导入jedis的坐标的时候,就能直接获取bean对象,如果没有导入坐标就获取不到user对象
思路:
就是利用conditional注解 注解中指定一个condition接口的实现类
实现类中有一个方法 返回true/false
当true的时候被注解修饰的方法会被执行,当false的时候被注解修饰的方法不会被执行
版本1:
public class User {
}
@Configuration//用于标识该类是一个配置类=>>相当于applicationContext.xml
public class UserConfig {
//创建User对象,并将User对象交给spring容器
//用于修饰方法,将方法执行,返回的对象交给spring容器
//如果没有指定name属性,默认使用方法名
@Bean//相当于<bean id="" class="user">
public User user(){
return new User();
}
}
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringbootDay02Demo01Application.class