1. 程式人生 > >Spring學習筆記(二)——註解建立物件和注入屬性

Spring學習筆記(二)——註解建立物件和注入屬性

一、Bean相關的註解

與SpringBean相關的註解有以下四大類:

  • @Component:標註一個普通的Spring Bean類
  • @Controller:標註一個控制器元件類
  • @Service:標註一個業務邏輯元件類
  • @Repository:標註一個DAO元件類

如果我們需要定義一個普通的Spring Bean,那麼直接使用@Component標註即可。但如果用@Repository、@Service或者@Controller來標註,那麼這個Bean類將被作為特殊的JavaEE元件來對待。在Spring的未來版本中,@Controller、@Service和@Repository也許還能攜帶更多的語義,因此,如果需要在JavaEE應用中使用這些註解時,儘量考慮使用@Controller、@Service和@Repository來代替普通的@Component註解。

二、使用註解來建立物件

1、匯入jar包
我們除了在:戳我一下中需要的jar包外,還需要匯入:
這裡寫圖片描述
2、配置xml檔案

<?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 --> <!-- 開啟註解掃描 --> <!-- 開啟註解掃描後,它會到你的包裡掃描類,方法,屬性上的註解 -->
<context:component-scan base-package="com.jiayifan.ano"> <!-- 這裡的如果有多個包,我們可以用"com.jiayifan"來代替以此為開頭的所有包 --> <!-- 只掃描屬性上的註解 --> <!-- <context:annotation-config></context:annotation-config> --> </beans>

3、寫一個類

package com.jiayfian.test;
import com.jiayifan.ano.*;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestAnno {
    @Test
    public void test1() {
        ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean.xml");
        Bean1 b = (Bean1) context.getBean("Bean1");
        System.out.println(b);
        b.add();
    }
}

4、執行結果截圖

ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean.xml");
        Bean1 b = (Bean1) context.getBean("Bean1");
        System.out.println(b);
        b.add();

這裡寫圖片描述
我們可以感覺到用註解的方法來建立類要比配置檔案簡單一點。

三、用註解來注入物件屬性

(1)建立dao和service物件
(2)在service類裡面定義一個dao型別屬性
(3)在dao屬性上使用@AutoWired註解自動完成注入(我們也可以通過使用@Resource(name="建立的物件的名稱,寫在value中的")完成注入)

service類
package com.jiayifan.ano;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component(value="service")
public class Bean2Service {
    //得到Dao物件
    //1、先建立一個Dao型別屬性
    //2、在dao屬性上使用註解完成物件注入
    @Autowired
    private Bean2Dao dao;
    //使用註解方法時不需要set方法
    public void add() {
        System.out.println("Bean2Service");
        dao.add();
    }
}
dao類
package com.jiayifan.ano;

import org.springframework.stereotype.Component;

@Component(value="dao")
public class Bean2Dao {

    public void add() {
        System.out.println("Bean2Dao");
    }
}
執行程式碼
ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean.xml");
        Bean2Service b = (Bean2Service) context.getBean("service");
        System.out.println(b);
        b.add();

結果截圖
這裡寫圖片描述

四、配置檔案和註解混合使用

1、建立物件操作使用配置檔案實現
2、注入屬性的操作使用註解方式實現

發現了一個講解Spring註解的博文,推薦一下:戳我一下