Spring通過註解的方式配置Bean

組件掃描:Spring能夠從classpath下自動掃描、偵測和實例化具有特定註解的組件。

特定組件包括:

—@Component:基本註解,標識了一個受Spring管理的組件

—@Respository:標識持久層組件

—@Service:標識業務層(服務層)組件

—@Controller:標識表現層組件

對於掃描的組件,Spring有默認的命策略:使用非限定名,第一個字母小寫。也可以通過註解中的value屬性標識組件的名稱 。

1、base-package屬性指定一個需要掃描的基礎類包,Spring容器會掃描這個基礎類包及其子包中的所有類,、

2、當需要掃描多個包時,可以使用逗號分隔

3、當需要掃描某個特定的類,而非所有,可以使用resource-pattern過濾特定的類(自己需要的類,就是過濾進來)

4、context:include-filter子節點標識包含的目標類,context:exclude-filter子節點標識排除哪些類下可以包含若干個這樣的子節點

controller:

package annotation.controller;import org.springframework.stereotype.Controller;/** * @author chenpeng * @date 2018/6/2 15:21 */@Controllerpublic class UserController { public void execute(){ System.out.println("UserController execute...."); }} 

service:

package annotation.service;import org.springframework.stereotype.Service;/** * @author chenpeng * @date 2018/6/2 15:20 */@Servicepublic class UserService { public void add(){ System.out.println("UserService add....."); }}

respository:

package annotation.respository;import org.springframework.stereotype.Repository;/** * @author chenpeng * @date 2018/6/2 15:19 */@Repositorypublic class UserImpl implements User { public void save() { System.out.println("save......"); }}

配置文件:

          

各個層之間的關聯關係

實際上元素會自動註冊AutowiredAnnotationBeanPostProcessor實例,改實例可以自動裝配

@Autowired和@Resource、@Inject註解的屬性

Spring通過註解的方式配置Bean

使用@Autowired自動裝配Bean:@Autowired註解自動裝配具有兼容類型的單個Bean的屬性

—構造器、普通字段,一切只有參數的方法都可以應用@Autowired註解

—默認情況下,所有使用@Autowired註解的屬性都需要被設置,當Spring找不到匹配的Bean裝配屬性時,會拋出異常。

若某一屬性允許不被設置,可以為@Autowired註解的required屬性設置為false

當有有多個類型相同的Bean被裝配的時候,若要不衝突:

1、在類的註解中加入特定的名字

2、注入的時候可以@Autowired和@Qualifier一起使用指定要注入的bean

除了@Autowired之外,還可以使用@Resource或@Inject來自動裝配,他們的功能和@Autowired相似,建議使用@Autowired


分享到:


相關文章: