我正在配置shiro-spring-starter.
@Configuration
public class ShiroConfig {
@Bean[/span
public Realm realm() {
return new UserRealm()。
}
Without @Component
public class UserRealm extends AuthorizingRealm{
@Autowired
private UserMapper userMapper。
}
UserRealm是用 "new UserRealm() "創建的,沒有@Component。 為什么@Autowired會起作用?
uj5u.com熱心網友回復:
在你的代碼中,@Component注解是不需要的,因為你已經在ShiroConfig類中把UserRealm物件創建為一個spring bean。 由于它是一個Spring Bean,Spring將管理該物件并執行由@Autowired注解指定的依賴注入。
如果您沒有在ShiroConfig類中創建UserRealm物件作為一個spring bean,那么您就需要在UserRealm類中使用@Component注解。 @Component 注解將使spring自動創建一個UserRealm類的實體作為spring Bean,前提是組件掃描被啟用。
因此,你要么不使用@Component注解并在配置類中手動創建spring Bean,要么使用@Component注解并讓spring自動創建spring Bean。 結果是一樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313478.html
標籤:
