Maven+Spring环境搭建

来源:互联网 发布:js定义json数组并赋值 编辑:程序博客网 时间:2024/06/05 18:25

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/beanshttp://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包中的内容,所以不要重复引入。

0 0