spring在整合框架中常用配置的bean

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring在整合框架中常用配置的bean相关的知识,希望对你有一定的参考价值。

1 数据源

1.1spring默认的数据源DriverManagerDatasource

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql:///spring"></property>
        <property name="username" value="lsn"></property>
        <property name="password" value="123"></property>
    </bean>

1.2 dbcp数据源

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClass}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.userName}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

1.3 c3p0数据源

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.userName}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

2 spring声明式事务管理

事务管理器PlatformTransactionManager最常用的两个实现类:

01  DataSourceTransactionManager

02 HibernateTransactionManager

首先配置事务管理器:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

 

2.1 代理工厂管理事务

<bean id="serviceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="transactionManager"/><!-- 绑定事务管理器 -->
        <property name="target" ref="stockService"/><!-- 代理目标对象 -->
        <property name="transactionAttributes"><!-- 事务属性,参数为Properties -->
            <props><!-- 在指定的事务切入点上  -:事务回滚;+:事务提交 -->
                <prop key="open*"> ISOLATION_DEFAULT, PROPAGATION_REQUIRED</prop>
                <prop key="buyStock">ISOLATION_DEFAULT, PROPAGATION_REQUIRED,-UserException</prop>
            </props>
        </property>
        
    </bean>

2.2AspectJ管理事务

<!-- 02 使用AspectJ管理事务,需要两个jar包,同样需要绑定事务管理器,还要指定切入点 -->
    <tx:advice id="myAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="open*" isolation="DEFAULT" propagation="REQUIRED"/>
            <tx:method name="buyStock" isolation="DEFAULT" propagation="REQUIRED" 
                rollback-for="UserException"/>
        </tx:attributes>
    </tx:advice>
    <!-- 指定切入点 -->
    <aop:config>
        <aop:pointcut expression="execution(* *..service.*.*(..))" id="myPoint"/>
        <aop:advisor advice-ref="myAdvice" pointcut-ref="myPoint"/>
    </aop:config>

2.3 使用注解管理事务

<tx:annotation-driven transaction-manager="transactionManager"/>

3 整合hibernate 配置,创建sessionFactory

<!-- spring代替了hibernate原来的Configuration类,读取配置文件 -->    
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        不再读取配置文件,还是用数据源直接读取下边的配置信息 -->
        <property name="dataSource" ref="dataSource"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
            </props>
        </property>
        <!-- <property name="mappingResources">有点麻烦
            <list>
                <value>cn/bdqn/jboa/entity/CheckResult.hbm.xml</value>
                <value>cn/bdqn/jboa/entity/ClaimVoucher.hbm.xml</value>
            </list>
        </property> -->
        <property name="mappingDirectoryLocations">
            <list>
                <value>cn/bdqn/jboa/entity/</value>
            </list>
        </property>
    </bean>

 声明hibernate事务

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
        p:sessionFactory-ref="sessionFactory"></bean>

 

4 整合MyBatis时

4.1 使用mapper.xml文件,使用SqlSessionTemplate

<!-- 配置SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- mybatis 核心配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- sql的映射文件 -->
        <property name="mapperLocations" value="classpath:cn/bdqn/dao/*.xml"></property>
    </bean>
<!-- 配置sqlSessionTemplate -->
    <bean id="sessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <!-- 只能用构造方法注入 -->
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

4.2 使用Mapper工厂模式

<!-- 配置SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- mybatis 核心配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 使用Mapper工厂模式,不需要加载配置文件 -->
        <!-- <property name="mapperLocations" value="classpath:cn/bdqn/dao/*.xml"></property> -->
    </bean>
<!-- 配置dao层的mapper -->
    <bean id="employeeMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="cn.bdqn.dao.EmployeeMapper"></property>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

4.3事务管理

<!-- 事务管理 -->
    <bean id="transactionManager" 
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 
        p:dataSource-ref="dataSource">
    </bean>

5 springMVC配置

5.1 默认配置,可以不写

<bean name="/welcome.html" class="cn.bdqn.controller.WelcomeController"></bean>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

5.2 使用注解

<!-- 使用注解的方式实现映射 让spring扫描base-package包下所有的类,找标注@Controller的类 -->
        <context:component-scan base-package="cn.bdqn.controller"></context:component-scan>
        <mvc:annotation-driven></mvc:annotation-driven>

5.3配置试图解析器

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

5.4 配置全局异常

如果与局部异常同时存在,只执行局部异常。

<!-- 配置全局异常 SimpleMappingExceptionResolver
        Key为出现的异常类型,值为对应的逻辑视图名。
        -->
        <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="exceptionMappings">
                <props>
                    <prop key="cn.bdqn.exception.UserException">error</prop>
                </props>
            </property>
        </bean>

5.4 访问静态资源

<!-- 访问静态资源:将静态资源路径映射成url路径 
        **:模糊匹配,匹配statics/ 下所有的-->
        <mvc:resources location="/statics/" mapping="/statics/**"/>

5.5 上传文件

大小限制单位是字节byte

<!--上传文件 -->
        <bean id="multipartResolver" 
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="5000000"></property>    
        </bean>

 

以上是关于spring在整合框架中常用配置的bean的主要内容,如果未能解决你的问题,请参考以下文章

框架 day36 Spring3 入门,DI依赖注入,装配bean基于xml/注解, 整合Junit4,配置约束自动提示

Spring+SpringMVC+MyBatis+Maven框架整合

Spring框架--Spring注解开发

SSM 框架 ---项目整合

maven项目 实现 spring mybatis 两个框架整合

spring,mybatis 整合 启用tomcat 报错