在使用spring配置文件中配置的依赖关系时(比如某个类中对象调用另一个对象的方法),为什么使用前有的代码里需要先写上加载spring的xml配置文件的代码(比如new ClassPathXMLApplicationContext("spring配置文件路径");),有的代码不需要写就可以直接使用配置文件中配置好的依赖关系?
其实都需要有new ClassPathXMLApplicationContext("spring配置文件路径");这一部的,只是有些时候,我们在web.xml中配置了对spring配置文件的监听后,这个操作有框架替我们做了而已
在web.xml中配置一个<!-- 配置spring -->
contextConfigLocation
classpath:spring/applicationContext-*.xml
<!-- 配置spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
这样说吧,,,
一个spirng项目运行,最少需要在代码中加载一个配置文件(web项目可以配置,一个道理还是需要给个配置文件的路径进行加载)
【至少加载一个】
【“有些地方可以不写加载但是可以使用配置文件中配置好的依赖关系”】
原因是,该类对象受到spring的管理,,能够被管理了,,,就说明已经加载spring配置了。
(这种类都有一个特征,要不加了注解要不再配置文件中配置了。)
java web项目启动的时候服务器已经把IOC容器实例化了,如果只是单独执行的话需要手动实例化IOC容器(如new ClassPathXMLApplicationContext("spring配置文件路径"))
spring加载配置文件的方式不同,导致这种情况。详情可参考,http://www.cnblogs.com/Neil223/p/5454212.html
都是需要的,有时候是我们在Java后代用代码写,有时候就是楼上说的xml文件中进行了配置,如果Eclipes安装了SpringTool插件的话,在web.xml文件中直接按住alt+/倒数的那个Listener就可以代替代码的功能。