作者回复: 上下文可以有很多个,这个是我们自己决定的。我可以编程方式来控制。你说的没错,我这里只是为了演示上下文继承的一些坑。
作者回复: 发现你这是个好办法,我自己念foo和父都觉得会让人搞不清楚,当时像你这么机智就好了
作者回复: 不是啊,如果是个单纯的SpringBoot应用程序,加在随便哪个配置类上就行了,Application那个类也是个配置类,大家都是一样的。我在这个例子里是在演示不同的上下文,这个注解其实就是帮忙配了些东西,它配在哪个上下文里,哪里就会有AOP的增强。
作者回复: 这个继承和Java的继承没啥关系啊。父Context里的增强只能看到自己Context里的Bean,并看不到子Context的东西,所以也没法增强。
作者回复: ApplicationContext这个接口本身就是extends了BeanFactory的,所以ApplicationContext就是BeanFactory。如果你去看ClassPathXmlApplicationContext,初始化时传入parent,最终是调用了setParent()方法,然后获取Bean时,resolveBean()方法在当前上下文没找到Bean定义时会去父上下文找的。
作者回复: 是的,testBean打头的
作者回复: 子上下文在使用时,里面的同ID Bean会覆盖父上下文里的那个Bean。
作者回复: 因为我们的代码里是这么写的呀,你可以在看看我们的示例
作者回复: 我写了@AfterReturning("bean(testBean*)"),那拦截到testBeanX和testBeanY就是应该的。
作者回复: 通过@Bean注解配置了一个FooAspect类型的Bean
作者回复: 1. 我们的两个ApplicationContext并不是/beans显示的,所以看不到
2. 有setParent()方法,你可以试试
作者回复: 传统的Spring MVC工程的确是有两个上下文的,和你理解的差不多。