@Configurable(preConstruction = false)
public class Mock implements IMock
{
@Autowired
private Foo foo;
public Mock()
{
System.out.println("i need foo in the constructor but it is not autowired at this point " + foo);
}
@PostConstruct
public void start()
{
System.out.println("starting");
}
}
当我设置Spring Ashej加载时间编织并通过new
关键字创建一个实例时,如下所示(下图)。事实证明,我无法访问构造函数中的依赖项。正如预期的那样,这一切都很好。执行顺序是构造函数-
public class Main
{
public static void main(String[] args)
{
URL url = Main.class.getResource("applicationContext.xml");
FileSystemXmlApplicationContext ctx = new FileSystemXmlApplicationContext(url.getPath());
Mock mock = new Mock();
}
}
所以我设置了可配置(preConstruction=true)
。现在,我可以访问构造函数中的依赖项。但问题是执行顺序:autowire-
我误解了什么吗?@PostConstruct的语义学是什么?是“post构造函数”还是“post依赖注入”?我查看了@PostConstruct的javadoc。它没有提到构造函数。
编辑:顺便说一句,以下是我使用的库版本:
Spring方面4.1.6。发布
Spring仪表4.1.6。发布
@PostConstruct
在Spring中由Common AnnotationBeanPostProcess
处理,并与为给定bean工厂配置并适用于有问题的bean的所有bean配置后处理器一起运行(按照它们配置运行的顺序)。@Configurable
注释只是将其他非Spring托管的bean标记为有资格通过Spring进行自动装配和bean后处理,并且是通过AnnotationBean配置后处理
完成的。preBuilding=true
将指示此配置应该在有关对象的构造函数运行之前发生。这意味着如果preBuild=true
,则在运行相关对象的构造函数时,Spring将完成对对象的配置。
太长别读-是的,这是你的情况下事情应该发生的预期顺序。
但我的问题是,如果它不使用AspectJ进行编织,那么Spring AOP是否有自己的编织,它是在加载时还是编译时执行? 我的Spring配置XML文件的相关部分是:
关于 promise reduce执行顺序 请高手解释下为何p1和p2为什么都是打印1,p1和p2都在runPromiseInSequence之前执行 这是我尝试修改后的代码, 看起来还是比较吃力,求大佬帮我解析一下,问了chatgpt回答的不正确
问题内容: 在HTML页面中包含JavaScript的方法有很多。我知道以下选项: 内联代码或从外部URI加载 包括在或标记[ [1],[2] ] 没有属性或属性(仅外部脚本) 包含在静态源中或由其他脚本动态添加(处于不同的解析状态,具有不同的方法) 不计算硬盘中的浏览器脚本,javascript:URI和-attributes [[3] ],已经有16种方法可以使JS执行,我敢肯定我忘了一些东西
但还是毫无头绪。
每当打开Hibernate会话时,我都想使用AsheJ添加一个过滤器。我创建了一个方面并为我自己的类测试了它,它起作用了,但是对于Hibernate会话它什么也不做。 我创建了一个META-INF/aop。资源中的xml: 当我开始我的程序时,我得到以下异常: 我遵循了这些教程: 教程1教程2 我发现我必须按照异常的指示传递JVM参数,所以我尝试在构建梯度中执行以下操作: 根据IntelliJ,a
打印2的位置 怎么解释呢