一、java内置注解

1、@Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:

ElemenetType.CONSTRUCTOR   构造器声明

ElemenetType.FIELD   域声明(包括 enum 实例)

ElemenetType.LOCAL_VARIABLE   局部变量声明

ElemenetType.METHOD   方法声明

ElemenetType.PACKAGE   包声明

ElemenetType.PARAMETER   参数声明

ElemenetType.TYPE   类,接口(包括注解类型)或enum声明

2、@Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:

RetentionPolicy.SOURCE   注解将被编译器丢弃

RetentionPolicy.CLASS   注解在class文件中可用,但会被VM丢弃

RetentionPolicy.RUNTIME   VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

3、@Documented 将此注解包含在 javadoc 中
     4、@Inherited 允许子类继承父类中的注解
     5、@Deprecated  表示当前元素是不赞成使用的。
     6、@Override  表示当前方法是覆盖父类的方法。
     7、@SuppressWarnings  表示关闭一些不当的编译器警告信息。

二、Spring内置注解

1、@Autowired注解

采用byType的方法自动装配。可以应用在类的成员变量、成员方法和构造子。默认情况下使用@Autowired注解进行自动注入时,Spring容器中匹配的候选Bean数目必须有且仅有一个。可以设置required=false让其成为可选的。当存在多个类型一致的bean时,可以用@Qualifier注解来明确指定要装配的bean。

2、@Qualifier注解

@Qualifier("Bean的名称")  指定注入Bean的名称。只能用于类的成员变量、方法的参数和构造子的参数。如果它与@Autowired联合使用,则自动装配的策略就变为byName了。

注解使用范例:

public class Person {
private Long id;
private String name;
private Address address; public Person(){ } public Person(Long id, String name){
this.id = id;
this.name = name;
} @Autowired(required=false)
public void setAddress(@Qualifier("address2")Address address) {
this.address = address;
}
}
<!-- 通过注解定义bean。默认同时也通过注解自动注入 -->
<context:component-scan base-package="com.cjm"/> <bean id="address1" class="com.cjm.model.Address" p:city="gz1" p:zipCode="111"/>
<bean id="address2" class="com.cjm.model.Address" p:city="gz2" p:zipCode="222"/> <bean id="person" class="com.cjm.model.Person">
<constructor-arg index="0" value="111"/>
<constructor-arg index="1" value="cjm"/>
</bean>

自定义限定符注解:

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyQulifier {
String value();
}
public class Person {
private Long id;
private String name;
private Address address; public Person(){ } public Person(Long id, String name){
this.id = id;
this.name = name;
} @Autowired
public void setAddress(@MyQulifier("a2")Address address) {
this.address = address;
}
}
<bean id="address1" class="com.cjm.model.Address" p:city="gz1" p:zipCode="111">
<qualifier type="com.cjm.annotation.MyQulifier" value="a1"/>
</bean> <bean id="address2" class="com.cjm.model.Address" p:city="gz2" p:zipCode="222">
<qualifier type="com.cjm.annotation.MyQulifier" value="a2"/>
</bean>

3、@Component注解

@Component("Bean的名称")  通过注解标注一个类为受管Bean。默认情况下通过@Component定义的Bean都是singleton的,如果需要使用其它作用范围的Bean,可以通过@Scope注释来达到目标。

4、@Scope注解

@Scope("Bean的作用范围")  通过@Scope注解为受管指定作用域。BeanBean的作用范围有:singleton、prototype等。

5、@Controller注解

6、@Service注解

7、@Repository注解

三、JSR-250规范的注解(需要common-annotations.jar包的支持)

1、@Resource注解

@Resource(name="person")  name属性用于指定注入的Bean的名称。

@Resource(type=Person.class)  type属性用于指定注入的Bean的类型。

2、@PostContsuct注解

用于指定受管Bean的初始化方法,作用与Bean的init-method属性类似。

3、@PreDestory注解

用于指定受管Bean的析构方法,作用与Bean的destory-method属性类似。

四、AspectJ内置注解

spring 注解的总结的更多相关文章

  1. spring注解源码分析--how does autowired works?

    1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行d ...

  2. Spring注解

    AccountController .java Java代码   1.        /** 2.         * 2010-1-23 3.         */ 4.        packag ...

  3. spring 注解的优点缺点

    注解与XML配置的区别 注解:是一种分散式的元数据,与源代码耦合. xml :是一种集中式的元数据,与源代码解耦. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码耦合/解耦. 注解的 ...

  4. spring注解说明之Spring2.5 注解介绍(3.0通用)

    spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.fac ...

  5. 使用Spring注解来简化ssh框架的代码编写

     目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...

  6. spring注解scheduled实现定时任务

    只想说,spring注解scheduled实现定时任务使用真的非常简单. 一.配置spring.xml文件 1.在beans加入xmlns:task="http://www.springfr ...

  7. [转]Spring 注解总结

    原文地址:http://blog.csdn.net/wangshfa/article/details/9712379 一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) ...

  8. eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式

    eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式 右键项目打开Properties—>JA ...

  9. Spring注解【非单例】

    花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...

  10. spring注解方式在一个普通的java类里面注入dao

    spring注解方式在一个普通的java类里面注入dao @Repositorypublic class BaseDaoImpl implements BaseDao {这是我的dao如果在servi ...

随机推荐

  1. c#字符串转换为日期,支持任意字符串

    文章关键字: c#字符串转换为日期 c#日期转换字符串   字符串转换日期   字符串转换为date   整数转换为字符串   浮点数转换为字符串 字符串转换为时间   将字符串转换为时间   字符转 ...

  2. Library not found for -lPods 解决方法

    使用cocoapods 经常会遇到的问题. 1. Library not found for -lPods 2. Pods was rejected as an implicit dependency ...

  3. Orchard 刨析:前奏曲

    Orchard中大量使用了依赖注入,而实现依赖注入的组件就是Autofac,它在Orchard中扮演者非常重要的角色,多租户如是,模块如是,工作区也如是.今天就来讲讲Autofac在Orchard中的 ...

  4. 百度地图 IOS版开发经验分享

    最近刚完成app中地图的应用,感觉非常的曲折,折腾了很久,刚才开始一直不能成功使用百度地图api,报一大堆的错误,后来换到高德地图,又发现服务端使用的百度的经纬度,又从高德换回百度,泪奔. 这里简单比 ...

  5. MOTT的学习(一)

    MQTT的消息体 flag 此标志设置时,客户端或服务器尝试重新publish,PUBREL,subcribe或unsubscribe消息.这适用于消息, 其中的QoS的值大于零(0),并且需要确认. ...

  6. Easyui使用记录

    一天就这搞了这几行. 1. if else 可以嵌套: 2. 子页面调用父页面js,需要使用top.父页面js的方法. <script type="text/javascript&qu ...

  7. Spring-事物-不依赖应用服务器的开源JTA事物实现

    不依赖应用服务器的开源JTA事物实现JOTM和Atomikos Transactions JOTM 即基于Java开放事务管理器(Java Open Transaction Manager),实现JT ...

  8. 【BZOJ-2843&1180】极地旅行社&OTOCI Link-Cut-Tree

    2843: 极地旅行社 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 323  Solved: 218[Submit][Status][Discuss ...

  9. 【poj1012】 Joseph

    http://poj.org/problem?id=1012 (题目链接) 半年前的考试题..任然清晰的记得那次差10分就AK... 题意 约瑟夫环,有前k个好人,后k个坏人,要求使得后k个坏人先死的 ...

  10. Rootkit Hacking Technology && Defence Strategy Research

    目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...