溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring中基于注解的組件掃描怎么實現

發(fā)布時間:2021-08-25 10:22:21 來源:億速云 閱讀:157 作者:小新 欄目:編程語言

這篇文章主要介紹了spring中基于注解的組件掃描怎么實現,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在使用組件掃描時,需要現在XML配置中指定掃描的路徑

<context:component-scan back-package="yangjq.test">

容器實例化會掃描yangjq.test包及其子包下的所有組件類。

只有當組件類定義前面有下面的注解標記時,這些組件類才會被掃描到Spring容器
- @Component 通用注解
- @Name 通用注解
- @Repository 持久化層組件注解
- @Service 業(yè)務層組件注解
- @Controller 控制層組件注解

命名

組件在掃描過程會生成一個默認的id值(小寫開頭的類名),這個也可以在注解標記中自定義id值,比如:

//這個是默認的id,值為OracleUserDao
@Repository
public class OracleUserDao implements UserDao{
}
//這個是自定義的id,值為loginService
@Service("loginService")
public class UserService{
}

組件的作用域

Spring管理的組件通常默認的作用域是”singleton”,如果需要其他的作用域,則可以用@Scope注解,只需要在注解中提供作用域的名稱就可以。

@Scope("prototype")
@Repository
public class OracleUserDao implements UserDao{
}

初始化和銷毀

@PostConstruct和@PreDestroy注解標記用于指定初始化和銷毀的回調方法,比如:

public class ExampleBean{
	@PostConstruct
	  public void init(){
		//.......初始化
	}
	@PreDestroy
	  public void destroy(){
		//........銷毀
	}
}

對于具有依賴注入關系Bean的注解

它可以使用下面幾個任意一個實現關系注入

- @Resource
- @AutoWired/@Qualifier
- @Inject/@Named

通常用的@Resource比較多,就說個@Resource吧,其他的用的時候再搜索看下
@Resource注解標記可以用在字段定義或setter方法定義前面,默認首先按名稱匹配注入,然后類型匹配注入

public class UserSerivce{
	//@Resource  這個用在字段定義
	private UserDao userDao;
	@Resource  //這個用在setter方法前面
	public void setUserDao(UserDao dao){
		this.UserDao=dao;
	}
}

遇到多個匹配Bean時注入會發(fā)生錯誤,可以顯式指定名稱,比如@Resource(name=”exampleDao”).

感謝你能夠認真閱讀完這篇文章,希望小編分享的“spring中基于注解的組件掃描怎么實現”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI