美文网首页
Spring_5 使用注解注入bean

Spring_5 使用注解注入bean

作者: mm_cuckoo | 来源:发表于2017-03-08 23:22 被阅读676次

    导入jar 包

    包名
    commons-logging-1.1.3.jar
    log4j-1.2.17.jar
    spring-beans-4.2.4.RELEASE.jar
    spring-context-4.2.4.RELEASE.jar
    spring-core-4.2.4.RELEASE.jar
    spring-expression-4.2.4.RELEASE.jar
    spring-aop-4.2.4.RELEASE.jar

    创建 bean.xml 文件,并添加约束(可以在帮助文档docs/spring-framework-reference/html/xsd-configuration.html中找到)

    添加注解的约束,在beans 中添加http://www.springframework.org/schema/context/spring-context.xsd 示例如下

    <?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
            
            <!-- bean definitions here -->
        
        <!-- 开启注解扫描
                (1) 到包里面扫描 类 ,方法,属性上是否有注解
         -->
        <context:component-scan base-package="com.sfox"/>
        
        <!-- 扫描属性上的注解,这个只会扫描属性上的注解,不会扫描类上的注解 -->
        <!-- <context:annotation-config/> -->
    </beans>
    

    创建bean对象(以User 对象为例)

    package com.sfox.spring.ano;
    
    import org.springframework.stereotype.Component;
    
    @Component(value="user")
    public class User {
        public void add(){
            System.out.println("user add........");
        }
    }
    
    

    上面代码就是使用注解,在上面的例子中使用@Component注解,value设置的值对应 xml 中配置bean 的 id。

    测试代码如下

    public class SpringTest {
        @Test
        public void anoTest(){
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            User user = (User) context.getBean("user");
            user.add();
        }
    }
    
    

    注解创建对象

    @Component 注解,作用在class 类上,创建实体对象。
    Spring 中提供@Component 的三个衍生注解:

    1. @Controller :WEB 层
    2. @Service :业务层
    3. @Repository :持久层

    这三个注解是为了让标注类本身的用途清晰,Spring 在后续版本会对其增强。

    1. @Component
    2. @Controller
    3. @Service
    4. @Repository

    这四个功能一样

    注解注入属性

    1. @Autowired : 自动注入
    package com.sfox.spring.xmlAano;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component(value="userBean")
    public class UserBean {
        
        @Autowired
        private UserInfo userInfo;
        
        public void addUser(){
            System.out.println("userBean add.....");
            userInfo.showName();
        }
    }
    
    1. @Resource(name="userBean") : 设置注入,指定注入对象的name ,name 和注解创建对象中value值对应,和xml中配置bean的id 相对应。
    package com.sfox.spring.xmlAano;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Service;
    
    @Service(value="serviceDao")
    public class ServiceDao {
        
        @Resource(name="userBean")
        private UserBean userBean;
        
        @Resource(name="bookBean")
        private BookBean bookBean;
        
        public void add(){
            System.out.println("service dao add.....");
            userBean.addUser();
            bookBean.bookAdd();
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring_5 使用注解注入bean

          本文链接:https://www.haomeiwen.com/subject/oxiigttx.html