当前位置: 首页 > 网络应用技术

春季扩展点的应用程序contextaware

时间:2023-03-08 20:21:16 网络应用技术

  弹簧中有两种类型的对象,一个是用户定义的对象,另一个是弹簧容器对象,例如ApplicationContext,BeanFactory等。使用@AutOWared使用@AutOWared和其他方法时注射,但是如果需要使用容器对象,如何注入它?

  Spring提供了一种扩展方法,即用于实现容器对象注入的ApplicationContextaware接口。

  该接口中只有一种方法,也就是说

  创建ApplicationContextaware接口的实现类,以在实现类中获得本地变量上下文,实现SetApplicationContext方法,然后在上下文中接收容器对象。

  上下文变量不是必需的。如果您需要在后续业务中使用上下文,则将其存储。如果您在bean初始化时仅使用一次,则不需要。

  作为第一个BeanPostProcessor执行。

  首先查看bean初始化时每个扩展点的执行顺序。在bean初始化方法中,可以看出执行顺序为:

  其中,ApplicationContextaware位于BeanPostProcessorsbeforinialization阶段。您知道吗?

  在该方法中,设置每个扩展点的实现。

  其中,在方法中,您可以看到它将被添加到BeanPostProcessor中。

  再次查看它,它实现了写入该方法的BeanPostProcessor界面。在该方法中,如果发现Bean是一种类型,请调用SetApplicationContext()方法。