SpringMVC配置

注册注解处理器

• 方式一:bean

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

• 方式二: 命名空间<context:annotation-config />

<context:annotationconfig />将隐式地向Spring 容器注册AutowiredAnnotationBeanPostProcessor 、CommonAnnotationBeanPostProcessor 、 PersistenceAnnotationBeanPostProcessor 以及RequiredAnnotationBeanPostProcessor 这4 个BeanPostProcessor 。

• 方式三: 命名空间<context:component-scan/>

如果要使注解工作,则必须配置component-scan ,实际上不需要再配置annotation-config。

base-package 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。还允许定义过滤器将基包下的某些类纳入或排除。


 

启用SpringMVC注解
启动SpringMVC 的注解功能,完成请求和注解POJO的映射
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>


视图解析器
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>


 

 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd
    <mvc:resources mapping="/js/**" location="/js/"/>


拦截器
    <mvc:interceptors>
        <!-- 多个拦截器,顺序执行 -->
        <mvc:interceptor>
            <mvc:mapping path="/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->
            <bean class="com.interceptor.CommonInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>


 

数据源定义,使用dbcp连接池
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
         <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
         <property name="username" value="mytest"/>
         <property name="password" value="1" />
         <!--最大连接数据库连接数,设置为0时,表示没有限制;-->
         <property name="maxActive" value="10" />
         <!--maxIdle:最大等待连接中的数量,设置为0时,表示没有限制;-->
         <!--<property name="maxIdle" value="${jdbc.maxIdle}" />-->
         <!--&lt;!&ndash;maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息;&ndash;&gt;-->
         <!--<property name="maxWait" value="${jdbc.maxWait}" />-->
         <!--<property name="timeBetweenEvictionRunsMillis" value="1800000" />-->
         <!--<property name="numTestsPerEvictionRun" value="3" />-->
         <!--<property name="minEvictableIdleTimeMillis" value="1800000" />-->
         <!--<property name="validationQuery" value="SELECT 1" />-->
     </bean>


 

JNDI 数据源配置

<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"
value="java:comp/env/jdbc/***_jndi" />
<property name="lookupOnStartup" value="false" />
<property name="cache" value="true" />
<property name="proxyInterface" value="javax.sql.DataSource" />
</bean>

web.xml中的配置

<resource-ref id="ResourceRef_1200938765687">
<description></description>
<res-ref-name>jdbc/***_jndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

tomcat中的server.xml配置

     <Context path="/" reloadable="true" docBase="F:\workspace\***\WebRoot" workDir="F:\workspace\***\work" >
<Resource name="jdbc/***_jndi" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="***" password="1"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@***:1521:***"/>
    </Context>


配置数据源的另一种方式

<!-- 读取资源文件 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${driverClassName}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
</bean>


配置事务管理器 
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

拦截器方式配置事物
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />

<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />

<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>


自动代理配置
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.dengyang.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config> 


标注类型 的事务配置
<tx:annotation-driven transaction-manager="transactionManager"/>


===================与mybatis集成=======================

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.xml" />
<property name="mapperLocations">
<list>
<value>classpath:cn/info/platform/mapper/*-mapper.xml</value>
<value>classpath:cn/info/platform/entity/*-resultmap.xml</value>
</list>
</property>
</bean>


自动扫描cn.info.platform.mapper包下的Mapper接口,并实现其功能 , mybatis配置文件中namespace名字必须与Mapper接口名一致 ,接口中的方法名与mybatis中的sql的id一致。这样,在调用接口中的方法时,自动会去执行方法对应的sql语句
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.info.platform.mapper" />
<property name="markerInterface" value="cn.info.platform.mapper.BaseMapper" />
</bean>

如不配置以上这段代码,则实现Mapper接口,仍能达到一样的效果






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值