首页 > 学院 > 开发设计 > 正文

Spring注解的步骤

2019-11-15 01:10:03
字体:
来源:转载
供稿:网友
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创建Bean2、查找Bean的属性;如果有注解标注的属性;则利用注解解析器进行Spring容器的扫描如果@Resource(name="stu")name不为空则将name的值和spring容器中的Bean的ID进行匹配;匹配成功则注入如果匹配不成功则报错如果@Resource name属性为空“”则将会把依赖对象的名称作为默认值和spring容器中的Bean的ID进行匹配;匹配成功则注入@Resourcepublic 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 {    //引入依赖对象@Resourcepublic 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容器中@Componentpublic 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,期待你的加入。如果需要转载,请注明出处,谢谢!!

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表