spring自动装配疑问
spring装配时候有几种方法,自动装配为什么我使用时返回null
但是加上下边两句就正确,可是我看有的项目并没有下边两句话,他们是怎么装配的bean
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
productDao=(ProductDao) ctx.getBean("ProductDao");
------解决方案--------------------应该是两种吧
首先按名字,找不到就按类型。按类型查找时如找不到或同时找到多个,前台就报错
有XML格式的配置,也有annotaion的配置。你看到的可能是后者,完全交给spring容器管理,
spring会根据annotaion配置到指定的包查找哪些类被标注了@Repository,这个注解的作用就相当于你自己在applicationContext.xml手动定义了一个bean,其默认名就是首字母小写的类名。在要使用bean的地方就用@resource注解,Spring就开始注入了。
------解决方案--------------------你那第一行相当于手动初始化Spring的上下文,而在项目中都在启动时就会用个ContextLoaderListener来启动上下文,有了上下文当然就可以用上下文里面的Bean了.
------解决方案--------------------楼上两位说的比较清楚了。在没有容器的情况下,比如我们自己写的简单demo,练习spring,可以编程式加载上下文。但是如果是web项目,在容器启动的时候就要加载这些配置文件。所以可以在web.XML中看大加载的文件
------解决方案--------------------这两句话 是从applicationContext.xml中 获取已经注入的ProductDao对象。。如果没有 <bean id ="ProductDao" class=""> 就也不行的。。
至于自动装配,,前提也是要注入的只不过实现的方式不一样罢了。。。