zoukankan      html  css  js  c++  java
  • 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,期待你的加入。
    
    如果需要转载,请注明出处,谢谢!!
    

      

  • 相关阅读:
    合约广告系统-在线分配问题
    合约广告系统-合约广告系统
    合约广告系统-常用广告系统开源工具
    knnsearch
    ISOMAP和MDS降维
    dijstra算法
    矩阵大于某个数置零
    mathtype 公式分节隐藏
    fifo 实现问题
    vhdl 数据类型转换 使用IEEE标准库numeric_std 需要进行两次转换 use ieee.numeric_std.all;
  • 原文地址:https://www.cnblogs.com/wlx520/p/4737910.html
Copyright © 2011-2022 走看看