spring——spring的注解形式

关于依赖注入:

    1:map集合的注入:Map在Spring内部维护了LinkedHashMap 使数据有序。

        实体类:

                                                   

        配置:

                                            

    2:list集合的注入

                                                                      

    3:通过构造方法进行注入:

        配置文件

            index为参数属性位置,从0开始

            name为参数方法中参数名称

            value直接赋值

            ref引用类型

                                

        注意事项:

                                

        通过构造方法为属性赋值时,一定要保证xml文件中的构造参数,与具体类中的构造方法参数保持一致。

    注意:

        在没有导入源码的条件下,生成相应的方法可能会造成形式参数不对应

                            

        如果在xml配置文件中使用name属性指定参数名进行赋值时,可能会出现问题,所有建议大家使用index进行赋值。


    4.Parent属性  

        Spring容器创建对象时,需要指明子父级关系,如果不指明,那么Spring容器在创建对象时,只会单纯的创建一个对象,不会维护子父级关系。

    使用parent="父级的ID" 进行指定。

    5.简化注入操作 autowire---自动装配引用类型过程

<bean id="person" class="domain.Person" autowire="byName"></bean>

        bean中添加了autowire属性可以自定的注入引用类型的值,从此无需再手动注入。

        原理:

            autowire="byName",先会查找当前bean中的所有set方法,setCat()------>进行转换去掉set首字母小写------->cat属性------>拿到cat属相后与配置文件中的bean标签做匹配。如果bean中的id与之匹配,则能正确注入。

             autowire="byType",先会查找当前bean中的所有set方法,setCat()------>进行转换去掉set首字母小写------->cat属性------>找到cat的类型(domain.Cat)---->bean中的class类型做匹配,如果匹配成功则能正确注入。

                                            注意:如果使用byType;类型进行注入需要保证 class类型唯一

        配置全局的:

            default-autowire="default" 那么将不会有任何的作用如果bean中的配置为autowire="default"  那么该配置应该用全局的保持一致。

            总结:使用Autowire可以简化配置文件。将引入的注入方式,变成了自动的注入。从此程序员无需关注对象引用的注入。



属性注解:

    spring配置文件中添加属性注解:

            <!--启动属性注解  -->
           <context:annotation-config/>

    1-@Autowired注入方式:

        其实就是autowire属性的增强版,它有两种匹配规则。

        1.根据属性的名称与bean中的ID匹配,如果根据bean中的ID值匹配不成功,则根据属性的类型class进行匹配。如果Class类型能够正确匹配。则能注入。如果Class类型没有匹配成功,则报错。

        2.@Autowired + @Qualifier(value="catC"),两个注解同时使用的作用,就是指定具体的bean中的ID与之匹配。并且匹配方式变得唯一,必须按照ID进行匹配。如果找不到匹配的ID值那么必然报错

    2-Spring@Resource介绍: 

        @Resource注解就是@Autowired@Qualifier(value="catC")的增强版,能够实现

            1.按照属性的名称进行匹配bean的id

            2.按照属性的class类型进行匹配bean中的class

            3.按照指定的ID进行匹配

        说明:通常情况下使用@Resource居多,因为功能比较强大。实现的思路和原有的@Autowired不一致。


类的注解:   

    1-开启包扫描,在spring的配置文件中使用

<context:component-scan base-package="bean"/>

        作用:可以创建对象,并且还能为对象赋值(为引用类型赋值)

    2-添加@Component注解在类上

  注入的原理:首先开启包扫描,那么Spring容器在启动的时候就会到相应的包中去查找所有的添加了 @Component注解的类。并且为这些类创建对象,保存到Spring容器内部。如果类中包含了属性注解,那么在创建对象时完成属性的注入。

    3-关于注解ID的生成策略

    @Component
    public class Person{}   person

        在默认的条件下,bean中的id生成的原则是将类名首字母小写person.但是还需查询第二个字母:如果第二个字母是大写的那么首字母大写。

        Person  id------>person

        PErson  id------>PErson

        如果为生成的对象指定具体的ID,这时 Spring中默认的ID生成策略将不生效。


同类型注解

    @PostConstruct   初始化方法

    @PreDestroy        销毁方法

    @Scope(value="")         单例多例

    @Lazy(true)           懒加载

     根据不同的分层情况,设定不同的注解

            Dao       @Repository

            Service   @Service

            Web(servlet)       @Controller

    作用:提高代码的可读性





猜你喜欢

转载自blog.csdn.net/weixin_40663800/article/details/80165882