3.springboot-容器功能-@注解
Spring传统注解
说明:这些在Spring中的传统注解仍然有效,通过这些注解可以给容器注入组件
@Component
@Controller
@Service
@Repository
SpringBoot自己的注解
@Configuration
通过@Configuration创建配置类来注入组件
1.Spring的传统方式
输出
2.SpringBoot的@Configuration方式
解读
1.@Configuration标识这是一个配置类,等价于配置文件
2.程序员可以通过@Bean注解注入bean对象到容器3.当一个类被@Configuration标识,该类-BeanConfig也被作为一个Bean会注入容器
1) 默认单例,可以用@Scope("prototype")设置成多例
2)注意事项和细节
1.SpringBoot2新增特性:proxyBeanMethods指定Full模式和Lite模式
2.配置类可以有多个,就和Spring可以有多个ioc配置文件是一个道理
@Import
通过@Import来注入组件,给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Import({Dog.class,Cat.class})
@Conditional
条件注解说明
1.条件装配:满足Conditional指定的件,则进行组件注入
2.@Conditional是一个根注解,下面有很多扩展注解
扩展注解的作用:
应用实例
1.要求:演示在SpringBoot,如何通过@ConditionalOnBean来注入组件
2.只有在容器中有name=monster_nmw组件时,才注入dog01,代码如图
添加条件注解。name,只检查名字,对类型不做要求。
修改Bean的参数,使其满足条件name=monster_nmw。
这样就可以在容器中获取了
实例2
如果容器中没有name=monster_nmw的Bean,则注入下面的实例。常用于解决循环依赖问题。
@ImportResource
作用:原生配置文件引入,也就是可以直接导入Spring传统的beans.xml,可以认为是SpringBoot对Spring容器文件的兼容
参数:locations,别名value,而value可以省略。

配置绑定
@ConfigurationProperties
一句话:使用Java读取到SpringBoot核心配置文件application.properties的内容,并且把它封装到JavaBean中
应用实例
1.需求:将application.properties指定的属性值k-v和JavaBean绑定

配置绑定还有第2种方式(了解即可):
1)之前是通过@Component注入Furn的Bean,然后再使用的@ConfigurationProperties。如果把@Component注释掉了,@ConfigurationProperties会检查Furn没有注入,导致报红
2)在配置类使用注解,启用配置属性@EnableConfigurationProperties,参数是Furn.class类型
使得上面的@ConfigurationProperties能够生效,同时注入Furn。感觉不如和@Component的组合好用。
注意事项和细节
1.中文乱码
如果application.properties有中文,需要转成unicode编码写入,否则出现乱码
配置含中文
页面显示乱码
使用工具转码
修改配置即可
2.配置文件错误提示
使用@ConfigurationProperties(prefix="furn01")会提示如下信息,但是不会影响使用
在pom.xml中添加依赖,即可