标签:处理 classpath map csdn 相对 intern 没有 spring注解 也有
在将spring与springMVC结合使用时,当我们使用注解的时候,一般都是在spring配置文件中配置注解扫描dao层、service层的包,在springMVC配置文件中配置注解扫描controller,自己在练习spring+SpringMVC+mybatis的项目时对这种做法一知半解,所以在练习项目的时候在实践中对自己的一些想法进行了验证。
<?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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 启用注解 --> <context:annotation-config /> <!-- 设置使用注解的类所在的包 --> <context:component-scan base-package="dao,service.*"></context:component-scan> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:config/jdbc.properties</value> </list> </property> </bean> <!-- c3p0连接池配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 四大参数的name不能换,和连接池的构造函数有关--> <property name="driverClass" value="${jdbc.driverClassName}"/> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!--连接池中保留的最大连接数。默认值: 15 --> <property name="maxPoolSize" value="20"/> <!-- 连接池中保留的最小连接数,默认为:3--> <property name="minPoolSize" value="2"/> <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--> <property name="initialPoolSize" value="2"/> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> <property name="maxIdleTime" value="60"/> <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 --> <property name="checkoutTimeout" value="3000"/> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement" value="2"/> <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--> <property name="acquireRetryAttempts" value="0"/> <!--重新尝试的时间间隔,默认为:1000毫秒--> <property name="acquireRetryDelay" value="1000" /> <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 --> <property name="autoCommitOnClose" value="false"/> <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> <property name="maxStatements" value="100"/> <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 --> <property name="maxStatementsPerConnection" value="0"/> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <!-- 配置mybatis配置文件 --> <property name="configLocation"> <value>classpath:config/sqlMapConfig.xml</value> </property> <!-- 实体类映射文件路径,可以在这里直接配置,也可以在configLocation配置的文件中配置 ibatis2不支持 --> <!-- <property name="mapperLocations" value="classpath:config/sqlmap/*.xml" /> --> </bean> <!-- Dao --> <bean id="ibatisDao" class="dao.IbatisDao"> <property name="dataSource" ref="dataSource"></property> <!-- 这里的dao继承SqlMapClientDaoSupport,所以要显示的配置注入 sqlMapClient--> <property name="sqlMapClient"> <ref bean="sqlMapClient"/> </property> </bean> <!-- 开启事务注解 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 定义事务管理器(声明式的事务) --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
这里我们配置了事务管理器和基本的dao。service层采用的是注解注入
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 启用spring mvc 注解 --> <context:annotation-config /> <!-- 设置使用注解的类所在的包 --> <context:component-scan base-package="controller"></context:component-scan> <!-- 完成请求和注解POJO的映射 3.1后已经过时 与DefaultAnnotationHandlerMapping配套使用 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />--> <!-- 新的注解映射--> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> --> <!-- 使用新的注解映射必须指定 RequestMappingHandlerMapping去替代过时的DefaultAnnotationHandlerMapping--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 使用ajax向前台返回json需要在注解映射中添加转换器 --> <!-- 依赖包为jackson-core 、 jackson-annotation、 jackson-databind --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonHttpMessageConverter"/> </list> </property> </bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /><!-- 用于jackson2 --> <!-- class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> --> <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/page/" p:suffix=".jsp" /> </beans>
springMVC配置文件中配置了指定的HandlerAdapter和HandlerMapping以及Resolver。
在这种配置下,项目能正常运行,配置了@Transactional的service中的事务也能被我们的事务管理器管理。
标签:处理 classpath map csdn 相对 intern 没有 spring注解 也有
原文地址:http://www.cnblogs.com/leo-song/p/7862959.html