spring boot 如何将没有注解的类@Autowired

等于将类交给spring管理,也就是IOC。

注解@Autowired是自动装配,也就是spring帮你创建对象,当然前提是这个@Autowired的类已经配置成Bean了,spring配置bean文件我们常用的方法是编写配置文件。而spring boot则不需要这么麻烦,它提供了两个注解可以实现这个功能。

1.@Configuration

2.@Component

虽然@Configuration注解本质上还是 @Component,但是,两者是有区别的。这里简单的提一下,需要深入了解的可以百度一下这两个注解。

1.@Configuration一般是和@Bean一起使用,在@Configuration注解的类下的方法配置@Bean,则表明该方法IOC;而@Component注解的类中是不能定义类内依赖的@Bean注解的方法(你也可以在@Component的类中使用@Bean,后面这句话是spring的文档说明中翻译过来的,对于这里还是有点混乱,看完下面会清晰)。

2.@Configuration是通过cglib代理来调用的,而@Component并没有通过cglib代理来调用。

例如:A类中有方法1和方法2,方法2调用了方法1。(方法1返回的是一个对象)

(1)使用@Configuration来注解类,并用@Bean来注解两个方法,这时候调用的是同一个方法1返回的对象。(也就是说方法1依赖注入好了已经交给spring管理起来的,当方法二再调用到方法1的时候,直接从spring中提取出刚注入好的方法1的对象)

(2)使用@Component来注解类,并用@Bean来注解两个方法,这时候调用的是两个不同的方法1返回的对象。(这里应该可以说@Bean并没有起到注入的作用。当然如果想要在@Component中调用的是同一个方法1的话,只需要在该类中@Autowired一个方法1放回的对象)
---------------------

原文:https://blog.csdn.net/thesmalltears/article/details/79207232

posted @   ldp.im  阅读(1345)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2017-11-22 window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
点击右上角即可分享
微信分享提示