zoukankan      html  css  js  c++  java
  • spring的annotation

    spring容器创建bean对象的方式:

    1,使用反射调用无参构造器来创建实例(前提是这个类有无参构造器)(常规方式)

    2,通过工厂类获得实例(工厂类实现了接口FactoryBean<?>)

    3,通过实例工厂获得bean对象(不需要实现或者继承任何接口或者父类)

    4,通过静态工厂获得实例

    ioc中的annotation配置

    1,@Autowired
        1) @Autowired使用后需要在xml文件加入以下配置才能生效: <context:annotation-config/>

     2)@Autowired默认使用byType来装配属性,如果匹配到类型的多个实例,再通过byName来确定Bean。

    2,@Resource

      1)@Resource的作用和@Autowired差不多,只不过 @Resource是默认先用byName,如果找不到合适的就再用byType来注入

      2)在xml文件加入以下配置才能生效: <context:annotation-config/>

    byName就是通过Bean标签中的id或者name属性值进行匹配注入(匹配的是setXxx中去掉set后的名字),byType就是按Bean标签中的Class的类型进行匹配注入。(根据当前类中的set方法里面参数的类型,
                去容器中找相匹配的对象)

    eg:

     注意:自动装配只对[对象类型]起作用,对基本类型不起作用.

    @Autowired
        private Car car;
      <!-- autowire注解 默认bytype,再byname -->
       <bean name="car" class="com.briup.ioc.annotation.Car">
            <property name="price" value="33333"></property>
            <property name="name" value="test"></property>
        </bean>
        <bean name="car123456" class="com.briup.ioc.annotation.Car">
            <property name="price" value="122222"></property>
            <property name="name" value="baoma"></property>
        </bean>
    结果为:
    33333.0
    test

    3,@controller 控制器(注入服务)
    用于标注控制层,相当于struts中的action层

    4、@service 服务(注入dao)
    用于标注服务层,主要用来进行业务的逻辑处理

    5、@repository(实现dao访问)
    用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

    6、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
    <bean id="" class=""/>)
    泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

    @Component是Spring中所有bean组件的通用形式, @Repository @Service @Controller 则是 @Component的细化(它们区别很小,但最好归类使用)

    @Component有一个可选的参数,用于指定bean的名称
            @Component("boss")

    若不指定,默认为当前类的类名小写

     @Component注解可以直接定义bean,而无需在xml定义。但是若两种定义同时存在,xml中的定义会覆盖类中注解的Bean定义

     @Component注解直接写在类上面即可

        注意:
        1.component-scan标签默认情况下自动扫描指定路径下的包(含所有子包)

        2.component-scan标签将带有@Component @Repository @Service @Controller注解的类自动注册到spring容器中

        3.component-scan标签对标记了@Required @Autowired @PostConstruct @PreDestroy @Resource @WebServiceRef @EJB   @PersistenceContext @PersistenceUnit等注解的类进行对应的操作,使注解生效
        
        4.component-scan标签包含了annotation-config标签的作用

  • 相关阅读:
    _ 下划线 Underscores __init__
    Page not found (404) 不被Django的exception中间件捕捉 中间件
    从装修儿童房时的门锁说起
    欧拉定理 费马小定理的推广
    线性运算 非线性运算
    Optimistic concurrency control 死锁 悲观锁 乐观锁 自旋锁
    Avoiding Full Table Scans
    批量的单向的ssh 认证
    批量的单向的ssh 认证
    Corrupted MAC on input at /usr/local/perl/lib/site_perl/5.22.1/x86_64-linux/Net/SSH/Perl/Packet.pm l
  • 原文地址:https://www.cnblogs.com/wskb/p/10939430.html
Copyright © 2011-2022 走看看