一、BeanFactory后处理器实现
AnnotationConfigUtils
Autowired无法确定inter使用的是哪一个实现类。
将inter对象的名字改为bean3,就可以创建bean3对象了。因为当@Autowired发现注解的对象有多个实现类时,会寻找是否有类名和注解的对象名一样。
使用@Resource注解按名字获取bean对象
同时添加@Autowired和@Resources注解后,按照后处理器的添加顺序决定使用哪个注解的匹配规则来寻找Bean对象。
由于Autowired处理器在前,所以先使用Autowired注解来获取bean对象。
二、处理器排序
通过给后处理器排序,可以控制注解生效的顺序。
排序后将@Resources注解的后处理器排到前面,最终使用@Resources注解来匹配bean对象。
排序器中使用优先级进行排序,优先级值越大,越靠后。
三、 ApplicationContext实现类示例
AnnotationConfigServletWebServerApplicationContext可以管理web环境下的java配置类对象。
执行testAnnotation方法后,可以通过浏览器访问localhost:8080/hello
此写法相当于使用内嵌的tomcat启动web应用,被通配符"/"匹配到的路径被dispatherServlet转发到controller里面进行处理。
ServletWebServerFactory,DispatcherServlet,DispatcherServletRegistrationBean这三个Bean对象被放到了Tomcat容器中。