spring中什么时候需要注入bean(有哪些类需要注入,哪些类不需要呢)?

spring中什么时候需要注入bean(有哪些类需要注入,哪些类不需要呢)?

Spring中什么时候需要注入bean(有哪些类需要注入,哪些类不需要呢)?

不得不说,这是一个有价值,并且也曾一度困惑我的问题。我也曾经一度怀疑,注入的目的是什么,为什么要注入,这样的问题。 首先,你需要先问这样一个问题:Spring 实现了什么,解决了什么问题?众所周知,Spring 做的两个事情:IOC,AOP。这两个特性里面,其实就是两个事; 如果A类有成员变量B类,B有成员变量C类。就是A依赖B,B依赖C。实际上,就是A依赖BCD,D依赖EFGH…更复杂的依赖。如果全部成员变量都需要自己手动去new的话,管理依赖实在太复杂。所以,把ABCDEFGH…这些组件全部交由Spring管理,然后用依赖注入。就省了自己new对象的这些过程。AOP,AOP其实只是一个特性。我觉得,总体来讲就是,对象交由Spring管理的话,因为对象由Spring的动态代理。从而可以做相应的增强!AOP只是其中一个,其余还包括,注解Spring缓存,Spring的事物,甚至是监听器等等。Spring都有其便利的实现方式。但是实现的前提就是,注册为Spring的组件。也就是Service,Controller这些。我觉得这两个,就是把Bean交由Spring管理,使用时再注入的主要原因。 再回到最原始的问题:有哪些类需要注入,哪些类不需要呢? 假如,一个对象需要依赖Spring的其他依赖,或者Spring的特性,包括但不限于 AOP,事务,缓存等。甚至,如果你要读取Spring等配置文件里的内容,也需要将其交由Spring管理。在我来看其他情况,就没有必要交由Spring管理。 再举个需要交由Spring管理的例子:比如,我要在本地上传一个文件,需要一个文件路径,然而我的路径配置信息存放在配置文件中,这时该属性通过 @Value 注解从配置文件获取。这种情况,就需要将Consts(常量类)注册为Bean。然后通过 @Autowired注入。 .xml配置文件:

file:

upload:

dir: ${user.dir}/upload

常量类:

/**

* 常量类

* @author lj

* @since 2022-04-30

*/

@Data

@Component

public class Consts {

@Value("${file.upload.dir}")

private String uploadDir;

}

图片上传工具:

/**

* 图片上传工具

* @author lj

* @since 2022-04-30

*/

@Slf4j

@Component

public class UploadUtil {

@Autowired

Consts consts;

...后续上传图片逻辑

}

作者:猿树洞出处:https://www.zhihu.com/question/439481519/answer/1679414314

相关文章

还在找华为荣耀8截图方法?看这篇就够了!
365bet官网开户

还在找华为荣耀8截图方法?看这篇就够了!

⌚ 06-30 👁️‍🗨️ 8046
如何查看电脑内存?Windows 和 Mac 方法不同
365bet官网开户

如何查看电脑内存?Windows 和 Mac 方法不同

⌚ 07-07 👁️‍🗨️ 3440
深扒周立波的黑历史:坐牢、诈骗、吸毒和通奸
365bet平台网投

深扒周立波的黑历史:坐牢、诈骗、吸毒和通奸

⌚ 07-09 👁️‍🗨️ 6278