目录
1.SpringBoot的特点
1.1 依赖管理
1.2 自动装配
2.容器功能
2.1 组件添加
2.2 原生配置文件引入
2.3配置绑定
1.SpringBoot的特点 1.1 依赖管理
父项目做依赖管理
依赖管理他的父项目 org.springframework.boot spring-boot-starter-parent2.3.4.RELEASE org.springframework.boot spring-boot-dependencies2.3.4.RELEASE
开发导入starter场景启动器 spring-boot-starter-* : *就某种场景 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。 所有场景启动器最底层的依赖如下:
org.springframework.boot spring-boot-starter2.3.4.RELEASE compile
在当前项目里面重写配置1.2 自动装配5.1.43
自动装配好对应的tomcat
引入tomcat依赖并配置tomcat
引入SpringMVC的全套组件自动配置好SpringMVC的常用组件(功能)自动配置好常见的web功能 比如字符集编码问题
默认配置最终都是映射到某个类上,如:MultipartProperties配置文件的值最终会绑定每个类上,这个类会在容器中创建对象按需加载所有的自动配置项
我们搭建好SpringBoot项目会自动加载非常多的starter场景启动器,他们并不会全部开启,而是根据我们设置的需求开启相关的场景启动器SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面 2.容器功能 2.1 组件添加
1.@Configuration 告诉springboot当前类是一个配置类
属性:proxyBeanMethods(默认是true):代理bean的方法 属性值不同则对应两种模式
Full(proxyBeanMethods = true)---组件依赖,容器中的一个组件中包含另外一个组件 Lite(proxyBeanMethods = false)---若只是单纯的注册组件而不存在组件依赖,该模式可以加快启动速度
如下场景则需要Full模式:
@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类 public class MyConfig { @Bean public User user01(){ User zhangsan = new User("zhangsan", 18); //user组件依赖了Pet组件 zhangsan.setPet(tomcatPet()); return zhangsan; } @Bean("tom") public Pet tomcatPet(){ return new Pet("tomcat"); } }
2.@Bean、@Component、@Controller、@Service、@Repository 注册当前组件到ioc容器中
3.@import
//@import({User.class, DBHelper.class}):给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名 @import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件 public class MyConfig { }
4.@Conditional 条件装配:满足Conditional指定的条件,则进行组件注入 举例如下:
@ConditionalOnBean(name = "tom") //是否存在名为"tom"的组件 @ConditionalOnMissingBean(name = "tom") //是否不存在名为"tom"的组件2.2 原生配置文件引入
1.@importResource 可以将我们已经配置在xml文件中的信息进行引入
@importResource("classpath:beans.xml") public class MyConfig {}2.3配置绑定
如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用?
1.@Component+@ConfigurationProperties:
将我们配置在application.properties中的信息读取并属性注入
mycar.brand=BMW mycar.price=100000
@Component @ConfigurationProperties(prefix = "mycar") public class Car { private String brand; private Integer price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } @Override public String toString() { return "Car{" + "brand='" + brand + ''' + ", price=" + price + '}'; } }
2.@EnableConfigurationProperties + @ConfigurationProperties
@EnableConfigurationProperties(Car.class) //1、开启Car配置绑定功能 //2、把这个Car这个组件自动注册到容器中 public class MyConfig { }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)