**
这是tomcat启动后所报的错误,无法自动注解!
1.切换sqlerver2012后jdbc配置如下**
这里和mysql的jdbc配置就url和driverClassName有些区别
2.mybatis的bean配置如下:这里要注意是扫描mapper文件的配置
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>${jdbc_driverClassName}</value>
</property>
<property name="url">
<value>${jdbc_url}</value>
</property>
<property name="username">
<value>${jdbc_username}</value>
</property>
<property name="password">
<value>${jdbc_password}</value>
</property>
<!-- 连接池最大使用连接数 -->
<property name="maxActive">
<value>400</value>
</property>
<!-- 初始化连接大小 -->
<property name="initialSize">
<value>20</value>
</property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait">
<value>30000</value>
</property>
<!-- 连接池最小空闲 -->
<property name="minIdle">
<value>50</value>
</property>
<!-- 自动清除无用连接 -->
<property name="removeAbandoned">
<value>true</value>
</property>
<!-- 清除无用连接的等待时间 -->
<property name="removeAbandonedTimeout">
<value>180</value>
</property>
<!-- 连接属性 -->
<property name="connectionProperties">
<value>clientEncoding=UTF-8</value>
</property>
<!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->
<!-- <property name="timeBetweenEvictionRunsMillis" value="10000" /> -->
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- mybatis文件配置,扫描所有mapper文件 --><!-- configLocation为mybatis属性 mapperLocations为所有mapper -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource" p:configLocation="classpath:configs/mybatis-config.xml"
p:typeAliasesPackage="com.wq.**.model" p:mapperLocations="classpath:**/mapping/*.xml">
<!-- <property name="plugins">
<list>
<bean
class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
<property name="dialectClass"
value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"></property>
</bean>
</list>
</property> -->
</bean>
<!-- spring与mybatis整合配置,扫描所有dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage="com.wq.**.dao.*" p:sqlSessionFactoryBeanName="sqlSessionFactory" />
<!-- 对数据源进行事务管理 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" />
<!--<tx:annotation-driven transaction-manager="transactionManager" /> -->
<!-- 事物切面配置 -->
<tx:advice id="advice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="complete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="reduce*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
<tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="baseService" expression="execution (* com.**.**.service.*.*(..))"/>
<aop:advisor advice-ref="advice" pointcut-ref="baseService"/>
</aop:config>
</beans>
3.到这步对比了一下网上大神的配置都没啥问题(前提你自己导入sqlserver的jar包没问题,这个可以自己写个main程序测试一下有能不能拿到数据)
**4.接下来看问题的本质,报错的那行红的是webController这个里面通过注解方式引入的server接口的实现类有问题,所以此类问题要排查所处问题的java类里面的注解实现类有没有问题,后来发现是注解homeUserServer里面有了一个注解的serve有问题,是因为我拷贝过来的项目用到了dubbo,这个提供者和消费者的配置文件被我在web.xml里面注销掉了,但是tomcat启动服务加载时webController里面homeUserServe用到这个服务,但是没有找到对应的配置所以报错,把用到的屏蔽就好了,数据访问也ok。
5.讲一下这个问题的心得吧,这类问题大多数是注解类引发的问题,要注意配置文件的增删,@Service有无缺失,以及你的实现类是不是抽象的没去掉,这只是在我的项目里发生的问题,只能参考,因为个人环境项目情况不一样,只要你能很好的描述问题就一定能解决,一个菜鸡的感慨,谢谢大家一起讨论,指教。