1.什么是Spring?
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.为什么要用Spring?
非侵入式:使用spring只需要添加配置文件或者注解即可使用,无需让我们的业务类继承Spring类或者实现Spring接口。
控制反转IoC:通过DI(依赖注入)的方式,我们不需要手动创建对象,而是直接获取Spring容器管理的对象。
面向切面编程AOP:应用中的业务类只需要关注业务即可,而无需关注系统级需求,通过面向切面的方式,我们可以实现事务管理和系统日志。
容易整合其他框架:如struts,hibernate,mybatis等框架。
3.怎样使用Spring?
(1)pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>provided</scope>
</dependency>
(2)配置Spring-context.xml文件名可以任意。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="springTestBean" class="com.inuniversal.test.SpringTest">
<property name="param" value="xml测试参数" />
</bean>
</beans>
(3)java代码测试:
SpringTest.java
public class SpringTest {
private String param;
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
public void printParam(){
System.out.println("SpringTest:"+param==null?"默认参数":param);
}
}
测试入口类:SpringTestBootstrap.java
public class SpringTestBootstrap {
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(
"spring-context.xml");
SpringTest obj = (SpringTest) context.getBean("springTestBean");
obj.printParam();
}
}
以上就是在java项目中使用Spring的方法。那么如何在java web环境下使用Spring呢?
4.Tomcat+Spring
(1)在web.xml中添加如下配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
其中contextConfigLocation参数是类ContextLoaderListener中createWebApplicationContext方法要使用的参数。
spring-context.xml中的内容还如上;
(2)编写servlet测试类:
@WebServlet("/springTest")
public class SpringTomcatTextBootstrap extends HttpServlet{
private SpringTest springTest;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
springTest = (SpringTest) context.getBean("springTestBean");
springTest.printParam();
/*
deal request
......
deal response
*/
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
在编写测试的过程中出现两个问题:
(1)如果在web.xml配置了struts过滤器,那么@WebServlet注解将失效。
(2)要使用@WebServlet注解,就要依赖javaee.jar包。javaee.jar包和servlet-api.jar包的区别:通过查看两个jar包的内容,javaee.jar包包含servlet-api.jar包中的内容,所以不要重复引入。