springboot 常用注解
- @Autowired 和 @Resource
- 1. @Autowired
- 2. @Resource
- 3总结
- @Value和@ConfigurationProperties获取值比较
- @Value获取值和@ConfigurationProperties获取值比较
- 总结
- @PropertySource 和 @ImportResource
- @PropertySource
- @ImportResource
- SpringBoot推荐给容器中添加组件的方式
@Autowired 和 @Resource
- spring中,@Resource和@Autowired都是做bean的注入时使用。使用过程中,有时候@Resource 和 @Autowired可以替换使用;有时,则不可以。*
1. @Autowired
(1) @Autowired 是由 spring 提供的.
(2)@Autowired默认按类型装配,
默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:
@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired() @Qualifier("baseDao")
private BaseDao baseDao;
2. @Resource
(1) @Resource 是由 JDK 提供的
(2)@Resource默认是按名字装配
①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
(3)
3总结
@Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。
@Value和@ConfigurationProperties获取值比较
@ConfigurationProperties:
-
与@Bean结合为属性赋值
-
与@PropertySource(只能用于properties文件)结合读取指定文件
-
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
-
prefix = “person”:配置文件中哪个下面的所有属性进行一一映射
@Value获取值和@ConfigurationProperties获取值比较
总结
-
配置文件yml还是properties他们都能获取到值;
-
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
-
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
@PropertySource 和 @ImportResource
@PropertySource
- 加载指定的配置文件
@ImportResource
- 导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
@ImportResource(locations = {"classpath:beans.xml"})
导入Spring的配置文件让其生效
SpringBoot推荐给容器中添加组件的方式
推荐使用全注解的方式
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件
例如
/*** @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件 *
* 在配置文件中用<bean><bean/>标签添加组件 **/
@Configuration
public class MyAppConfig {
//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService02(){
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService();
} }
更多推荐
springboot 常用注解以及区别
发布评论