zoukankan      html  css  js  c++  java
  • spring 注解的总结

    一、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内置注解

  • 相关阅读:
    触发器和存储过程
    转 “automation服务器不能创建对象”的问题的解决方案总结大全
    纯JS幻动片
    SQLServer2000、2005/2008 生成数据字典SQL语句
    根据DEMO做的第一个WCF出现的问题
    让文本框显示行号,兼容ie、火狐
    水晶报表截取指定字符串长度
    20100831 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态
    分页控件
    附加数据库函数
  • 原文地址:https://www.cnblogs.com/damowang/p/4305101.html
Copyright © 2011-2022 走看看