Spring_5 使用注解注入bean

導入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();
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容