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 常用注解以及区别