spring中注入组件的注解
springboot的核心始终还是spring,spring中的组件在springboot中基本都能够使用,类似的,我们在springboot中也可以使用@Component,@Controller,@Service,@Repository等进行容器的注入
在上面我就使用@RestController注入了一个Controller,我们debug查看singletonObjects
可以发现已经成功注入了容器中,其它也是类似的,就不再测试了
@Configuration
我们可以通过这个注解来指定配置类,我们在配置类中可以很方便的往容器中注入注解。在传统的spring中,注入组件到容器一般就是通过注解或者配置文件,在springboot中我们可以通过在配置类中写一个方法即可
上面是我创建的一个配置类,使用@Configuration进行标识的,在这个类中我们写了一个dahuang的函数,返回一个Dog,这个函数使用了@Bean进行标识,这就标识这个函数返回的bean将会杯注入到容器中,名称就是函数名称,当然,我们也可以使用@Bean进行指定。
我们debug进行查看,看容器中是否又名称为dahuang的bean
可以发现确实成功注入了。注意:我们使用@Configuration标识的类本身也会注入到容器
原因就是Configuration注解包含了Component注解
@Import
我们可以使用@Import来注入组件
这个注解应用到配置类上,需要传入一个数组,里面写上要注入的组件就行了
上面的代码,我蒋Dog注入了容器,默认名称就是类的全路径
@Conditional
这个注解是一个根注解,在满足相应条件时才进行注入,改注解有许多的扩展注解
常见注解作用如下
这些注解可以作用到类上,也可以作用到方法上,只有满足条件组件才会被注入到容器中,下面通过一个@ConditionalOnJava来进行演示。改注解可以判断系统的java版本是否符合要求
这个方法上的注解就表示只有java版本为9时才会注入名为dahei的注解,我的java版本为8
发现容器中并没有为dahei的组件
下面将条件设置成为8
再次获取组件为dahei的,没有问题
其它的注解用法类似,依次类推即可
@ImportResource
这个注解用于原生配置文件引入, 也就是可以直接导入 Spring 传统的 beans.xml ,可以认
为是 SpringBoot 对 Spring 容器文件的兼容.
下面我们创建一个spring配置文件,并且配置了一个id为wangcai的Dog
我们通过@ImportResource进行引入
可以发现我们引入时可以指定位置,下面在配置类上进行引入
下面来测试一下是否引入成功
可以发现已经成功引入了
配置绑定
我们可以通过@ConfigurationProperties这个注解去读取配置文件中的内容,这样容器中bean的属性会去绑定配置文件中的属性
下面创建了一个People类,该类会去读取前缀为people的信息
可以发现出现了爆红提示,这个可以忽略,我们也可以引入一个jar来进行解决
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
下面我们获取一些id为people的组件,查看属性是否成功绑定
可以发现没有问题。对于属性绑定,我们还可以使用另外一个注解@EnableConfigurationProperties
这个注解的功能可以开启bean的配置绑定功能,还会将其自动注册到容器。我们在配置类上使用该注解将People注入到容器
注意: 我们需要将People上的@Component取消掉
看下是否绑定成功
可以发现已经成功完成了属性的绑定。