Spring框架的基本配置

2017-09-18  本文已影响0人  如一诺然

Spring的IOC和AOP概念

IOC

控制反转不是什么技术,而是一种设计思想。
传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IOC是有专门一个容器来创建这些对象,即由IOC容器来控制对象的创建。
因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转,依赖对象的获取被反转了。

AOP

Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点。简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。
在Spring AOP中,有 4 种类型通知(advices)的支持:
通知(Advice)之前 - 该方法执行前运行
通知(Advice)返回之后 – 运行后,该方法返回一个结果
通知(Advice)抛出之后 – 运行方法抛出异常后,
环绕通知 – 环绕方法执行运行,结合以上这三个通知。

一、建立工程

首先用eclipse创建一个web项目。新建一个工程,选择Dynamic Web Proect。
建立工程后会自动引用JDK和Tomcat的jar包。把Spring的jar包拷贝到WebContent/WEB-INF/lib文件夹下,系统会自动引用改文件夹下的jar包。

二、建立Spring的配置文件

项目src目录下新建一个Spring的applicationContext.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" 
xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd          
        http://www.springframework.org/schema/aop           
        http://www.springframework.org/schema/aop/spring-aop-4.1.xsd          
        http://www.springframework.org/schema/context           
        http://www.springframework.org/schema/context/spring-context-4.1.xsd          
        http://www.springframework.org/schema/tx           
        http://www.springframework.org/schema/tx/spring-tx-4.1.xsd  
        http://www.springframework.org/schema/cache 
        http://www.springframework.org/schema/cache/spring-cache-4.1.xsd">  

<!-- 将多个配置文件读取到容器中,交给Spring管理 -->
<bean id="propertyConfigurer"
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:global.properties</value>
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>

<!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
<context:component-scan base-package="cn.my.common" />
<context:component-scan base-package="cn.my.service" />
<context:component-scan base-package="cn.my.dao" />
  
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
        <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" />  
        <property name="username" value="test" />  
        <property name="password" value="test" />  
        <property name="maxActive" value="100" />  
        <property name="maxIdle" value="30" />  
        <property name="maxWait" value="1000" />  
        <property name="defaultAutoCommit" value="true" />  
        <property name="removeAbandoned" value="true" />  
        <property name="removeAbandonedTimeout" value="60" />  
    </bean>  

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">    
        <property name = "dataSource" ref="dataSource"/>    
    </bean>   
  
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource"/>  
    </bean>  
    <tx:annotation-driven transaction-manager="txManager"/>  
      
    <bean id="persistenceExceptionTranslationPostProcessor"   
       class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />  
</beans>  

我们可以在beans标签里添加bean标签等。

三、建立springservlet-config.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"  
  xmlns:p="http://www.springframework.org/schema/p"   
  xmlns:context="http://www.springframework.org/schema/context"  
  xmlns:util="http://www.springframework.org/schema/util"  
  xmlns:mvc="http://www.springframework.org/schema/mvc"  
  xmlns:tx="http://www.springframework.org/schema/tx"  
  xsi:schemaLocation="  
      http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans.xsd  
      http://www.springframework.org/schema/util  
      http://www.springframework.org/schema/util/spring-util.xsd  
      http://www.springframework.org/schema/context   
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc.xsd  
      http://www.springframework.org/schema/tx           
      http://www.springframework.org/schema/tx/spring-tx-4.1.xsd" >  
   
  
    <!-- 使用默认的注解映射 -->   
    <mvc:annotation-driven/>  
  
    <!-- 自动扫描controller包中的控制器 -->  
    <context:component-scan base-package="springMVC"/>  
    <!-- 基于注释的事务,当注释中发现@Transactional时,使用id为“txManager”的事务管理器  -->  
    <tx:annotation-driven transaction-manager="txManager"/>  
   <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <util:list id="beanList">  
                <ref bean="stringHttpMessageConverter" />  
                <ref bean="mappingJacksonHttpMessageConverter" />  
            </util:list>  
        </property>  
    </bean>  
    <bean id="stringHttpMessageConverter"  
        class="org.springframework.http.converter.StringHttpMessageConverter" />  
    <bean id="mappingJacksonHttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />  
  
    <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="maxUploadSize" value="50000000" />  
        <property name="defaultEncoding" value="UTF-8" />  
    </bean>  
  
    <bean  
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">  
        <property name="mediaTypes">  
            <map>  
                <entry key="json" value="application/json" />  
                <entry key="html" value="text/html" />  
                <entry key="file" value="application/octet-stream" />  
                <entry key="apk" value="application/octet-stream"/>  
            </map>  
        </property>  
        <property name="viewResolvers">  
            <list>  
                <bean  
                    class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
                    <property name="prefix" value="/WEB-INF/pages/" />  
                    <property name="suffix" value=".jsp" />  
                </bean>  
            </list>  
        </property>  
        <property name="defaultViews">  
            <list>  
                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />  
            </list>  
        </property>  
    </bean>  
</beans> 

说明:

    <!-- InternalResourceViewResolver-内部资源视图解析器 
        ControllerClassNameHandlerMapping-控制器类名处理映射
        SimpleUrlHandlerMapping-简单URL处理程序映射
    -->
    <!-- 用控制器类名称处理映射,BookAction不需要用@注解,需继承AbstractController类,
实现protected ModelAndView handleRequestInternal(HttpServletRequestrequest, 
HttpServletResponseresponse)throws Exception{}方法

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

   <bean class="com.test.controller.BookAction" />
   -->
   <!--  用简单URL处理程序映射,BookAction不需要用@注解,需继承AbstractController类,实现protected ModelAndView handleRequestInternal(HttpServletRequestrequest, 
HttpServletResponseresponse)throws Exception{}方法
   <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
         <props>
            <prop key="/book_1.jsp">bookAction</prop>           
         </props>
      </property>
   </bean>

   <bean id="bookAction" class="com.test.controller.BookAction" />
   -->
   <!--  
   可在applicationContext.xml增加自动扫描,
   <context:component-scanbase-package="com.test.controller"></context:component-scan>
    -->
    
    <!-- 加这个标签,可以访问html文件 <mvc:default-servlet-handler/> 需加<mvc:annotation-driven />才能使用control -->

四、建立web.xml配置文件

文件内容模版如下:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  <display-name>springMVC</display-name>  
  <!-- spring MVC配置 -->        
    <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:springservlet-config.xml</param-value>  
        </init-param>        
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- 载入spring -->   
    <context-param>   
        <param-name>contextConfigLocation</param-name>   
        <param-value>classpath*:applicationContext.xml</param-value>   
    </context-param>   
    <listener>  
        <listener-class>  
            org.springframework.web.context.ContextLoaderListener  
        </listener-class>  
    </listener>  
    <servlet-mapping>   
        <servlet-name>springMVC</servlet-name>   
        <url-pattern>/client/*</url-pattern>  
    </servlet-mapping>  
       
    <!-- 配置post表单编码格式(避免中文乱码) -->  
    <filter>  
        <filter-name>CharacterEncodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>utf-8</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CharacterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
</web-app>  
上一篇 下一篇

猜你喜欢

热点阅读