• spring的学习____14自动装配及其注解


    (本案例使用maven项目)

    1.三个实体类:

    @Component
    public class Cat {
    
        public void voice(){
    
            System.out.println("miaomiao~~~");
        }
    }
    @Component
    public class Dog {
    
        public void voice(){
            System.out.println("wangwang~~~~");
        }
    }
    @Component
    public class User {
    
    
    
        //@Autowired
        //@Qualifier(value = "cat")
    
        @Resource
        private Cat cat;
    
    
        //@Resource
    
        @Resource
        private Dog dog;
    
        public User() {
        }
    
        public User(Cat cat, Dog dog) {
            this.cat = cat;
            this.dog = dog;
        }
    
        public Cat getCat() {
            return cat;
        }
    
        public Dog getDog() {
            return dog;
        }
    
    //    public void setDog(Dog dog) {
    //        this.dog = dog;
    //    }
    //
    //    public void setCat(Cat cat) {
    //        this.cat = cat;
    //    }
    
    
    }

    2.spring配置文件: (applicationContext.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:util="http://www.springframework.org/schema/util"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/util
            http://www.springframework.org/schema/util/spring-util.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    
        <!--cat  bean-->
        <!--<bean id="cat" class="com.xbf.pojo.Cat"/>-->
        <!--dog bean-->
        <!--<bean id="dog" class="com.xbf.pojo.Dog"/>-->
    
        <!--
        1.传统的方式:
        User bean
        -->
        <!--<bean id="user" class="com.xbf.pojo.User">-->
            <!--<property name="cat" ref="cat"/>-->
            <!--<property name="dog" ref="dog"/>-->
        <!--</bean>-->
    
        <!--
        2.按名称自动装配:
        目标:完成spring容器中bean的实现,并给所有属性赋值
        过程:从本类的set方法中抽出属性名;再到spring容器中若已有的bean的id名和属性名一致
             就完成注入
        User  bean-->
        <!--<bean id="user" class="com.xbf.pojo.User" autowire="byName"/>-->
    
    
        <!--
        3.按照类型自动装配:
        根据属性的类型在已有的spring bean容器中找相应的bean进行注入,若出现相同类型的bean,就会报错
        -->
        <!--<bean id="user" class="com.xbf.pojo.User" autowire="byType"/>-->
    
    <!--===================利用注解的方式注入属性===========================================-->
        <!--利用注解的方式注入属性: <context:annotation-config/>  context文件头
    
        <!-
        4.<!-Autowired  在类中的属性上面写 @Autowired   按属性类型进行装配,与bean的ID无关-->
                      <!--可以不写set方法。-->
    
    
        <!--<context:annotation-config/>  &lt;!&ndash;开启使用注解的方式注入属性  context文件头&ndash;&gt;-->
        <!--<bean id="user" class="com.xbf.pojo.User"/>-->
    
    
        <!--
        5.Autowired :根据类型自动匹配
          加上 @Qualifier(不能单独使用)  配合着使用,相当于autowire="byName"
        -->
    
    
        <!--
        6. @Resource :先根据提供的属性的name 直接进行属性的注入;
                      根据默认的autowired="byname"进行属性注入;
                      根据autowired="bytype"进行属性的注入;
        -->
    <!--==============类自动装配===========================================================-->
        <!--包的扫描: 使用注解替换bean 的id-->
        <!--
             写在类名上头的注解:
                 @Controller :写在控制层类上
                 @Service :写在业务层类上
                 @Repository :写在Dao层类上
                 @Component :无法按照三个分类,就用这个注解
    
        -->
        <!--6.-->
        <context:component-scan base-package="com.xbf.pojo"/>
        <!--
        配置文件中只需写一句话:
        <context:component-scan base-package="包路径">
    
        context:component 组件扫描
        base-package 基本包,可以指定多个包,逗号隔开
        功能 :扫描该包下的注解,并生成bean 注入属性
        -->
    </beans>
    
    <!--
      (类名 和 类id 的对应关系: 比较有意思~~~·)
      类目和ID对应表 (默认情况下):
    
            类名:    CAT        cAT         CaT        caT
    
            ID:          CAT         cAT        caT         caT
    
        分析:类名的关键在于第二个字母,第二个字母大写,首字母大写小写无所谓。如果第二个字母小写,那第一个必须小写。第二个字母之后大小写没关系。
    
                   如果没有指定value,spring容器中id规则,是类名的首字母小写。
    <!-=================================================================================
     类名和 bean的 id在自定义时:
     @Component(value="cat")
    -->

    3.测试类:

    public class Test {
    
    
        @org.junit.Test
        public void test(){
    
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
            User user = (User) context.getBean("user");
    
            user.getCat().voice();
            user.getDog().voice();
    
        }
    
    
    }

    4.pop.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.xbf</groupId>
        <artifactId>test1</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
    
            <!-- spring-webmvc spring包 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.3.9.RELEASE</version>
            </dependency>
    
            <!--单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
            <!-- spring-tx -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.14.RELEASE</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <resources>
    
                <!--希望maven在导出项目的时候(target),能够将我们的配置及资源导出-->
    
                    <resource>
                        <directory>src/main/java</directory>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                        </includes>
                        <filtering>false</filtering>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                        </includes>
                        <filtering>false</filtering>
                    </resource>
            </resources>
        </build>
    
    
    </project>

    参考博客:https://www.cnblogs.com/kuotian/p/8795812.html

  • 相关阅读:
    Uri编码,包括javascript前端与C#服务器端
    快速排序
    bootstrap
    boosting
    bagging
    SHELL排序
    冒泡排序
    插入排序
    选择排序
    二叉树的数学性质
  • 原文地址:https://www.cnblogs.com/xbfchder/p/11286307.html
Copyright © 2020-2023  润新知