首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在@Configuration中,为什么@Autowired在没有@Component的情况下工作

在@Configuration中,为什么@Autowired在没有@Component的情况下工作
EN

Stack Overflow用户
提问于 2021-08-26 03:30:46
回答 1查看 72关注 0票数 0

我正在配置shiro spring-starter。

代码语言:javascript
复制
@Configuration
public class ShiroConfig {
    @Bean
    public Realm realm() {
        return new UserRealm();
    }
}
代码语言:javascript
复制
\\Without @Component
public class UserRealm extends AuthorizingRealm {
    
    @Autowired
    private UserMapper userMapper;
}

新组件是使用“UserRealm UserRealm()”创建的,没有@Component。为什么@Autowired能工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 03:59:31

在您的代码中,不需要@Component注释,因为您已经在ShiroConfig类中将UserRealm对象创建为一个spring bean。由于spring是一个spring bean,spring将管理该对象并执行@Autowired注释指定的依赖注入。

如果您没有在ShiroConfig类中将UserRealm对象创建为spring bean,那么您将需要在UserRealm类上使用@Component注释。假设启用了组件扫描,@Component注解将导致spring自动创建UserRealm类的实例作为spring bean。

因此,您要么不使用@Component注释并在配置类中手动创建spring bean,要么使用@Component注释并让spring自动创建spring bean。结果是一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68932158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档