struts2.3.16+spring3.2.3+mybatis3框架整合,无法注入?

发布于 2021-11-29 21:10:04 字数 17207 浏览 790 评论 14

项目结构

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:context=" http://www.springframework.org/schema/context
    xmlns:aop=" http://www.springframework.org/schema/aop
    xmlns:jdbc=" http://www.springframework.org/schema/jdbc"  
    xmlns:tx=" http://www.springframework.org/schema/tx
    xsi:schemaLocation=" http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-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/tx 
           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
           http://www.springframework.org/schema/jdbc  
           http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd 
           http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context-3.2.xsd
           default-autowire="byName" default-lazy-init="false">
           <!--
           <context:property-placeholder location="classpath:config/jdbc.properties"/>
           -->
           <!-- 采用注解的方式配置bean -->
     <context:annotation-config/>
     <!-- 配置要扫描的包 -->
     <context:component-scan base-package="com.ssm.demo"/>
           <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
           <property name="locations" value="classpath:config/jdbc.properties"></property>
          </bean>
           <!--
          -->
           <!-- 配置数据源 -->
           <!--
           <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
     <value>org.logicalcobwebs.proxool.ProxoolDriver
     </value>
    </property>
    <property name="url">
     <value>proxool.mySpringPool</value>
    </property>
   </bean>
            -->
           <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
            <property name="alias" value="${proxool.alias}"/>
            <property name="driverUrl" value="${proxool.url}"/>
            <property name="driver" value="${proxool.driver}"/>
            <property name="user" value="${proxool.user}"/>
            <property name="password" value="${proxool.password}"/>
            <property name="simultaneousBuildThrottle" value="100"/>
            <property name="maximumConnectionCount" value="10"/>
            <property name="minimumConnectionCount" value="3"/>
            <property name="houseKeepingTestSql" value="${proxool.houseKeepingTestSql}"/>
            <property name="trace" value="true"/>
           </bean>
            <!-- <property name="houseKeepingSleepTime" value="15000"/> -->
           <!-- 配置session工厂sqlSessionFactory -->
           <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
            <property name="mapperLocations" value="classpath*:config/mybatisMapper/*Mapper.xml"></property>
             <!--
             -->
           </bean>
           <!-- 声明事物 -->
           <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
           </bean>
           <!-- 配置mybatis数据处理方式 ,扫描接口 -->
           <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
             <property name="basePackage" value="com.ssm.demo.mapper"></property>
           </bean>
          
           <!-- 配置事物的传播特性
           <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
             <tx:method name="save*" propagation="REQUIRED"/>
             <tx:method name="del*" propagation="REQUIRED"/>
             <tx:method name="update*" propagation="REQUIRED"/>
             <tx:method name="get*" propagation="REQUIRED"/>
             <tx:method name="count*" propagation="REQUIRED"/>
             <tx:method name="select*" propagation="REQUIRED"/>
            </tx:attributes>
           </tx:advice>
           -->
           <!-- 切面配置
           <aop:config>
            <aop:pointcut expression="execution(* com.ssm.demo.service.*.*(..))" id="method"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="method"/>
           </aop:config>
            -->
</beans>

 

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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 version="3.0">
  <display-name>ssmDemo</display-name>
  <!-- 设置spring容器加载配置文件的路径 -->
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:config/applicationContext.xml</param-value>
  </context-param>
  <!-- 设置log4j配置文件的路径 -->
  <context-param>
   <param-name>log4jConfigLocation</param-name>
   <param-value>classpath:config/log4j.properties</param-value>
  </context-param>
  <!--
  <context-param>
  <param-name>proxoolXmlFile</param-name>
  <param-value>classpath:config/proxoolconfig.xml</param-value>
  </context-param>
   -->
  <!-- 加载spring容器的配置 -->
  <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 监听log4j的配置 -->
  <listener>
   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <!-- 设置字符编码 -->
  <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>
  <!-- 配置struts2过滤器  -->
  <filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app> 

action:

 

service:

serviceImpl:

 

UserMapper:

 

为什么注入不进去呢?userSerivce是null?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

终遇你 2021-11-30 07:47:19

这是debug中的

等风来 2021-11-30 07:47:19

嗯,不客气!搞定了就好!

平生欢 2021-11-30 07:47:18

java.lang.NullPointerException at com.ssm.demo.action.UserAction.login(UserAction.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

为你鎻心 2021-11-30 07:47:17

回复
这个应该不是注入的问题,不能注入会提示具体哪个类不能注入的信息。

等风来 2021-11-30 07:47:14

回复
那为什么service为null呢?

眉黛浅 2021-11-30 07:47:11

报错信息给我看下

自此以后,行同陌路 2021-11-30 07:46:51

这是项目目录@Candy_Desire

背叛残局 2021-11-30 07:44:52

如果全包扫描呢?难道就扫描不到了吗?

鹤舞 2021-11-30 07:44:06

回复
你要扫描所有包当然是可以扫描到的,我的意思是你确保你要自动注入的包能扫描到就好!

心欲静而疯不止 2021-11-30 07:41:53

回复
你的userService类在com.ssm.demo这个包里么?

等风来 2021-11-30 07:38:07

回复
结构图在下边,你看看!

彼岸花ソ最美的依靠 2021-11-30 07:38:06

你在Spring的配置文件中添加扫描service包了么?

梦中楼上月下 2021-11-30 06:59:14

thank you!搞定了,少了个struts2-spring-plugin-2.3.16.3.jar。

卸妝后依然美 2021-11-30 06:54:23

你测试下用setter方法注入一下,如果还是注入不了就是Struts配置的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文