• Spring注解的步骤


    Spring框架提供DI(属性注解)和IOC(类/Bean的注解)注解。


    注解:标注、注入和解析、解释;标注和解释一部分代码的作用
    在框架中:就是配置文件的另外一种实现方式@Type、@Taget;减少配置文件的代码量;提高开发效率

    spring注解的步骤:

    1、引入命名空间:

    xmlns:context="http://www.springframework.org/schema/context"
            
        http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-2.5.xsd

    2、设置注解解析器或者设置类扫描器(两个设置一个即可)

    2、设置注解解析器或者设置类扫描器(两个设置一个即可)
            1、 <!-- 
                添加注解解析器:用于依赖注入使用;不具备类扫描功能
             -->
            <context:annotation-config/>
            
            2、<!-- 
            引入注解类扫描器
            指定哪些类要加载进入spring容器中
            哪些类需要交给spring进行管理
            功能:注解解析器功能
                类扫描的功能
             -->
             <context:component-scan base-package="com.msit.spring.IOC.Annotation.IOC"></context:component-scan>
             
        3、在要引入的类上标注注解
            @Component
                public class HelloSpring {
                }
                ===
                <bean id="helloSpring" Class="com.msit.spring.IOC.Annotation.IOC.HelloSpring"></bean>
        
        4、在要注入的依赖对象(类的属性)上加上注解标注
            @Resource
            public Student stu;


    DI(属性注解)注解原理:
    1、加载spring配置文件;遇到Bean创建Bean
    2、查找Bean的属性;如果有注解标注的属性;则利用注解解析器进行Spring容器的扫描
    如果@Resource(name="stu")name不为空
    则将name的值和spring容器中的Bean的ID进行匹配;匹配成功则注入
    如果匹配不成功则报错
    如果@Resource name属性为空“”
    则将会把依赖对象的名称作为默认值和spring容器中的Bean的ID进行匹配;匹配成功则注入
    @Resource
    public Student stu;
    就相当于@Resource(name="stu")
    如果名称匹配不成功;则会按照依赖对象的类型和Bean的类型(Class)进行匹配;匹配成功则注入
    如果匹配不成功则报错

    第一步:配置applicationContext-annotation-di.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd">
        
         <!-- 
            添加注解解析器
         -->
        <context:annotation-config/>
        
        <bean id="stus" class="com.msit.spring.IOC.Annotation.DI.Student">
            <property name="name" value="张三"></property>
        </bean>
        <bean id="hellospring" class="com.msit.spring.IOC.Annotation.DI.HelloSpring"></bean>
    </beans>      

    第二步:Student 实体类和测试类

    package com.mist.IOC.entiy;
    /*
     * 实体类
     */
    public class Studentds {
        private String name;//姓名
        private String age;//年纪
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        
    
    }
    package com.mist.IOC.Test;
    
    
    
    
    
    import javax.annotation.Resource;
    
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.mist.IOC.entiy.Studentds;
    
    public class HellowSpring {
        //引入依赖对象
    @Resource
    public Studentds stu;
    
    public Studentds getStu() {
        return stu;
    }
    
    public void setStu(Studentds stu) {
        this.stu = stu;
    }
    
    public static void main(String[] args) {
    
        ApplicationContext context=new ClassPathXmlApplicationContext("com/mist/applicationContext2.xml");
        HellowSpring te=(HellowSpring) context.getBean("hellowSpring");
        System.out.println(te.getStu().getName());
    }
    
    }

    效果图:

    IOC(类/Bean的注解)注解原理:
    1、加载配置文件;当读取到
    <context:component-scan base-package="com.msit.spring.IOC.Annotation.IOC"></context:component-scan>
    回去扫描com.msit.spring.IOC.Annotation.IOC这个包下的所有标注的类(@component)
    装配到spring容器中
    @Component
    public class HelloSpring {
    }
    ===
    <bean id="helloSpring" Class="com.msit.spring.IOC.Annotation.IOC.HelloSpring"></bean>

    @Component value属性
    默认值为“”;spring容器会将类的名称首字母小写其他不变作为Bean的ID
    如果不为空@Component("hellospring")会以设置的值为Bean的ID

    第一步:加载applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd">
        <!-- 
            引入注解类扫描器
            指定哪些类要加载进入spring容器中
            哪些类需要交给spring进行管理
            功能:注解解析器功能
                类扫描的功能
         -->
         <context:component-scan base-package="com.msit.spring.IOC.Annotation.IOC"></context:component-scan>
        
    </beans>   

    第二步:Student 实体类和测试类

    package com.mist.spring.DI;
    
    import org.springframework.stereotype.Component;
    
    @Component("stu")
    public class Strudents {
        private String name="王五";
        private String password;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    
    }
    package com.mist.spring.DI;
    
    import javax.annotation.Resource;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.stereotype.Component;
    
    @Component("testSpring")
    public class TestSpring {
        //引入依赖对象
        @Resource
        //@Autowired//按照类型查找
        //@Qualifier("stus")//按照名称查找
        public Strudents student;
    
        public Strudents getStudent() {
            return student;
        }
    
        public void setStudent(Strudents student) {
            this.student = student;
        }
        
        public static void main(String[] args) {
            
            ApplicationContext context=new ClassPathXmlApplicationContext("com/mist/spring/DI/applicationContext.xml");
            TestSpring Hello=(TestSpring) context.getBean("testSpring");
            System.out.print(Hello.getStudent().getName());
        }
    }

    效果图:

    注:

    	XML和注解对比
    		1、XML代码量多;开发效率低;可读性强;执行效率高
    		2、注解配置简单;开发效率高;可读性低;执行效率相对于XML偏低;但是对于整个系统而言;影响不是太大
    

      

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 
    
    如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   
    
    如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 2276292708@qq.com
    欢迎加入java ios 安卓技术交流群: 306431857,期待你的加入。
    
    如果需要转载,请注明出处,谢谢!!
    

      

  • 相关阅读:
    fullCalendar改造计划之带农历节气节假日的万年历(转)
    Linked List Cycle
    Remove Nth Node From End of List
    Binary Tree Inorder Traversal
    Unique Binary Search Trees
    Binary Tree Level Order Traversal
    Binary Tree Level Order Traversal II
    Plus One
    Remove Duplicates from Sorted List
    Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/wlx520/p/4737910.html
Copyright © 2020-2023  润新知