对依赖注入的粗暴理解:在类中对接口而不是特定的类引用。比如A类需要B类,在A中不适用new B()。而是引用B实现的接口。
依赖注入的有点很多,但是也有缺点。最明显的一点是,看代码的时候看到的不是实际实现,会增加代码的复杂度。
Spring已经是一个功能非常多的框架。如果只是想要使用依赖注入容器和web应用上下文加载器(application context loader)的话,在工程中,
只需要导入spring-core.jar,spring-beans.jar,spring-context.jar和spring-web.jar。当然,也可以就导入spring.jar,它包括了spring所有的功能。
导入相关的jar包是在工程中启用Spring的第一步,接下来:
1、 在web.xml中增加Spring上下文加载器的监听器:
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>当web应用启动时,ContextLoaderListenner会加载默认的Spring配置文件:WEB-INF/applicationContext.xml。当然,你也可以自己设定:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param>
2、 在Spring配置文件中配置要加载到容器中的组件(components)所在的路径:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.aturbo.dao.impl "/> </beans>
Spring提供了四种注解来指定组件(@Component(通用),@Repository(持久层),@Service(服务层)和@Controller(表现层))
3、 现在以持久层举例来说明如何注解一个组件:
Package com.aturbo.dao.impl; @Repository("baseDao") public class BaseDaoImpl implements BaseDao