Web开发中常用注解

注解

对象范围

全称

介绍

@PostConstruct

@Target(METHOD)

javax.annotation.PostConstruct

  1. PostConstruct 注解用于标记在依赖注入完成后需要执行的方法,以执行任何初始化操作。
  2. 类中只能有一个方法被标记为这个注解。
  3. 可以应用于拦截器以及普通类,执行目标为Method @Target(METHOD)
  4. PostConstruct注解应用于非拦截器类中的方法必须为无参(void)方法
  5. PostConstruct注解应用的方法可以是public, protected, package private or private
  6. 在web开发中,PostConstruct注解应用的方法不可是static静态的,但可以是final

教程:一文带你深入理解SpringBean生命周期之PostConstruct、PreDestroy详解 - 掘金

@PreDestroy

@Target(METHOD)

javax.annotation.PreDestroy

作用为:在容器销毁Bean的时候回调执行,用于释放资源

注:除作用不同外,其他注意事项同@PostConstruct注解一致

@Resource

@Target({TYPE, FIELD, METHOD})

javax.annotation.Resource

  1. @Resource和@Autowired都是做bean的注入时使用。区别在于@Autowired按byType自动注入。@Resource属于注解是属于J2EE,@Autowired注解属于Spring,推荐使用@Resource
  2. 此注解标记了应用程序需要的资源。作用于组件类、以及组件类的字段或者方法
  3. 此注解可以应用于私有字段
public class MyComponent {
    private ConnectionFactory connectionFactory;

    @Resource(name = "jdbc/MyDB")
    private DataSource dataSource;

    @Resource(name = "jms/MyFactory")
    public void setConnectionFactory(ConnectionFactory connectionFactory) {
        this.connectionFactory = connectionFactory;
    }
    // 其他代码
}

教程:@Resource注解用法_@resource使用-CSDN博客

@Resources

@Target(TYPE)

javax.annotation.Resources

@Autowired

@Target({

ElementType.CONSTRUCTOR,

ElementType.METHOD,

ElementType.PARAMETER,

ElementType.FIELD,

ElementType.ANNOTATION_TYPE

})

org.springframework.beans.factory

.annotation.Autowired

  1. 可以对类成员变量、构造方法、方法进行标注,以完成自动装备的工作
  2. @Resource有两个属性name和type。Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。@Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。

教程:@Autowired和@Resource的区别 - 掘金

@Qualifier

@Target({

ElementType.FIELD,

ElementType.METHOD,

ElementType.PARAMETER,

ElementType.TYPE,

ElementType.ANNOTATION_TYPE

})

org.springframework.beans.factory

.annotation.Qualifier

  1. 主要场景为自动装配类时可以定位具体的实现类(@Autowired按类型装配Spring Bean。 如果容器中有多个相同类型的bean,则框架将抛出NoUniqueBeanDefinitionException
  2. 通过使用@Qualifier注解,我们可以消除需要注入哪个
  • 46
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值