我现在搭建了一个SSM框架
这是我的目录结构这是我的配置内容
spring-mvc.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 默认的注解映射的支持 -->
<mvc:annotation-driven /> <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.Modular" /> <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean> <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 文件大小最大值 -->
<property name="maxUploadSize" value="10485760000" />
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="40960" />
</bean></beans>spring.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:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:aop="http://www.springframework.org/schema/aop" 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.0.xsd   
            http://www.springframework.org/schema/mvc   
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd   
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-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 ">  
  
    <!-- 扫描service、dao组件 -->  
    <context:component-scan base-package="com.Modular" />  
    <!-- 分解配置 jdbc.properites -->  
    <context:property-placeholder location="classpath:jdbc.properties" />  
      
    <!-- 数据源c3p0 -->  
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
        <property name="driverClass" value="${jdbc.driverClassName}" />  
        <property name="jdbcUrl" value="${jdbc.url}" />  
        <property name="user" value="${jdbc.username}" />  
        <property name="password" value="${jdbc.password}" />  
        <property name="maxPoolSize" value="${c3p0.pool.size.max}" />  
        <property name="minPoolSize" value="${c3p0.pool.size.min}" />  
        <property name="initialPoolSize" value="${c3p0.pool.size.ini}" />  
        <property name="acquireIncrement" value="${c3p0.pool.size.increment}" />  
    </bean>  
  
  
    <!-- sessionFactory 将spring和mybatis整合 -->  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <property name="configLocation" value="classpath:spring-mybatis.xml" />  
        <property name="mapperLocations" value="classpath*:com/mapping/*.xml" />  
    </bean>  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.Modular.*.Dao" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />  
    </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="append*" 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="delete*" propagation="REQUIRED" />  
            <tx:method name="remove*" propagation="REQUIRED" />  
            <tx:method name="repair" propagation="REQUIRED" />  
            <tx:method name="delAndRepair" propagation="REQUIRED" />  
  
            <tx:method name="get*" propagation="SUPPORTS" />  
            <tx:method name="find*" propagation="SUPPORTS" />
            <tx:method name="query*" propagation="SUPPORTS" />  
            <tx:method name="load*" propagation="SUPPORTS" />  
            <tx:method name="search*" propagation="SUPPORTS" />  
            <tx:method name="datagrid*" propagation="SUPPORTS" />  
  
            <tx:method name="*" propagation="SUPPORTS" />  
        </tx:attributes>  
    </tx:advice>  
    <aop:config>  
        <aop:pointcut id="transactionPointcut" expression="execution(* com.Modular..*.*(..))" />  
        <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />  
    </aop:config>  
</beans>我的Mapper文件配置<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Modular.login.Dao.LoginMapper">  
      
    <insert id="save" parameterType="Map">  
        insert into test(name,age,level) values(#{name},#{age},#{level})
    </insert>  
      
    <update id="update" parameterType="Map">  
        update test set name=#{name},age=#{age},level=#{level} where id=#{id}
    </update>  
      
    <delete id="delete" parameterType="Map">  
        delete from test where id=#{id}  
    </delete>  
      
     <!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路劲 -->    
    <select id="findById" parameterType="Map" resultType="User">  
        select name,age,level from test where id=#{id}  
    </select>  
      
    <select id="findAll" resultType="User">  
        select * from test  
    </select>  
      
</mapper>我的DAO接口代码import java.util.List;
import java.util.Map;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;import com.Modular.login.pojo.User;@Repository("loginMapper")
public interface LoginMapper {

@Transactional
public List<User> findAll();

@Transactional
public User findById(Map data);}我的service层代码 import com.Modular.login.Dao.LoginMapper;
import com.Modular.login.pojo.User;
@Service("loginService")
public class LoginService{ @Resource(name="loginMapper")
private LoginMapper loginMapper;

public List<User> findAll() {
return loginMapper.findAll();
} public User findById(Map data) {
return loginMapper.findById(data);
}}现在启动的时候总是包异常,具体异常代码如下org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'loginMapper' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:638)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1159)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:282)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        ....谁知道这个注入的问题怎么解决?

解决方案 »

  1.   

    改一下<!-- 扫描service、dao组件 -->  
        <context:component-scan base-package="com.Modular.login.pojo.User.*" />  你去扫所有的类吧
    不然你会弄不明白的
    我就直接com.zjhy.spring.*
    你这样容易混
      

  2.   

    我改成这样了还是报同样异常<context:component-scan base-package="com.Modular.login.*" /> 
      

  3.   

    那就估计是没找到你这个loginMapper.xml,不知道你这个com能不能访问的到
    我看不到你的项目,我的ssm是这样的
      

  4.   

    一般问题就是出在找不到xml和扫不到注解,你两方面去查
      

  5.   

    parameterType="Map"  要么写全路径 要么别名  parameterType="map"
    resultType="User" 这个类写全路径  resultType="com.Modular.login.pojo.User" 
      

  6.   

    注入问题你竟然把xml文件全站过来了, 注入不了很明显是 <context:component-scan base-package="com.Modular" />这个地方搜索不到
      

  7.   

    试一下这个。。
    <!-- 自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.clei.dao" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
    mapper.xml不必和接口放一起。。
      

  8.   


    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'loginMapper' is definedspring容器中没有名为loginMapper的Bean....配置了MapperScannerConfigurer为接口生成代理,去掉@Repository("loginMapper")注解,好好检查一下basePackage配置的包名是否正确,只要正确spring容器中肯定有这个Bean的