在Spring中,我可以使用Aware接口获取Spring的对象:
$datas = array_chunk(array_map('rtrim', file('./myFile.txt')), 5);
但是我可以使用@Autowired做同样的事情:
@Component
class TestAware : ApplicationContextAware, EnvironmentAware {
override fun setEnvironment(environment: Environment) {
println("Server port" + environment.getProperty("server.port"))
}
override fun setApplicationContext(applicationContext: ApplicationContext) {
println("ApplicationContext" + applicationContext.displayName)
}
}
那么它们之间有什么区别,在哪些情况下我必须使用Aware而不是@Autowired?
答案 0 :(得分:2)
传统上@Autowired是核心依赖注入方法,在构造函数中首选注入将由所述对象使用的必要bean。
意识到,更具体地说,我认为你的意思是ApplicationContextAware是吗?这意味着更多的更高视图,因此实现类可以改变它创建的上下文。整个含义和方法是不同的。如果您需要另一个bean的功能,请@Autowire(将其注入)到using类中。如果您需要操纵上下文,例如引导其他bean,根据整体注入的内容做出决策,那么这将是用于Aware的方法。
我是否错过了这个标记?