注入错误了

注入错误了

http://img1.sycdn.imooc.com//climg/5e675d3d09df3b8208960456.jpg

老师你好,请问这个问题怎么解决呢,我把业务层从SSM迁移过来就出现这个问题了,

这个要成功注入我的理解是mapper.xml里面的namespace要指向dao接口,然后mapperscan扫描实现注入,不知道我理解的对不对

http://img1.sycdn.imooc.com//climg/5e675df20982daf208210401.jpg

之前我测试areadao的时候都是可以正常测试的

http://img1.sycdn.imooc.com//climg/5e675e2809a294fa10260343.jpg

http://img1.sycdn.imooc.com//climg/5e675e4c092a888b06990312.jpg

一样的问题

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

8回答
提问者 不停奔跑的小恐龙 2020-03-11 21:23:55
package com.imooc.o2ov2.Config.dao;


import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.io.IOException;

@Configuration
public class SessionFactoryConfiguration {

    @Resource
    private DataSource dataSource;

    private String typeAliasesPackage = "com.imooc.o2ov2.entity";
    private String mapperLocations = "/mapper/**.xml";
    private String configLocation = "mybatis-config.xml";

    @Bean(name="sqlSessionFactory")
    public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(configLocation));
        PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
        String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperLocations;
        sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath));
        sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;

    }
}

老师你好我都配置在这里面了,没有像老师那样设置成静态属性,麻烦老师看看这样写着有错吗

  • 同学你好,如果设置为静态属性,在类加载时就会加载。这里建议同学按照老师的方式,将mapperLocations以及configLocation配置在application.properties配置文件中,类中定义静态属性,使用@Value注入值。祝:学习愉快~
    2020-03-12 11:02:35
好帮手慕阿满 2020-03-11 15:17:29

同学你好,可能是哪里配置有问题,导致扫描失效,没有自动生成dao的实现类,无法自动注入。

建议同学检查一下application.properties中的mybatis配置以及SessionFactoryConfiguration中是否有设置mapper路径,如:

http://img1.sycdn.imooc.com//climg/5e68901f090558ef05080198.jpg

http://img1.sycdn.imooc.com//climg/5e6890780913689106440273.jpg

祝:学习愉快~


提问者 不停奔跑的小恐龙 2020-03-11 11:49:16

http://img1.sycdn.imooc.com//climg/5e685f3b09f3fd2c06890242.jpg

老师你好,我是这样配置的,会不会是这个注解失效了,因为我在dao接口类加@Repository,就不会报错了

好帮手慕阿满 2020-03-11 10:50:54

同学你好,同学的理解时正确的。在LocalAuthServiceImpl类中使用到了LocalAuthStateEnum类,两个类不在同一个包下,所以需要导包,如:

http://img1.sycdn.imooc.com//climg/5e68514709e0ae7f07710476.jpg另外问一下同学已经迁移项目到Spring Boot框架了吗?问一下同学DataSourceConfiguration类中是否扫描dao的路径,如:

http://img1.sycdn.imooc.com//climg/5e6851d409a4a98805160237.jpg

建议同学检查一下。

祝:学习愉快~


提问者 不停奔跑的小恐龙 2020-03-10 21:11:52

http://img1.sycdn.imooc.com//climg/5e6791e4090d856107110240.jpg

加了注解倒是不会报错了,但是按理来说是不需要注解的不是吗

提问者 不停奔跑的小恐龙 2020-03-10 20:15:20

http://img1.sycdn.imooc.com//climg/5e67848e0924b74405630251.jpg

老师你好还是不行,之前SSM的时候都不存在这些问题的,还有我在问题里面阐述的关于dao注入的描述是对的吗,如果不正确麻烦老师纠正

好帮手慕阿满 2020-03-10 19:18:19

同学你好,关于注入dao时提示错误,建议@Qualifier配置@Autowired注解一起使用,如:

http://img1.sycdn.imooc.com//climg/5e677691094e74c004400147.jpg

关于枚举类报错,建议同学保存后再查看是否报错,如果还报错,建议同学查看一下导包语句是否正确。

祝:学习愉快~

提问者 不停奔跑的小恐龙 2020-03-10 17:32:52

http://img1.sycdn.imooc.com//climg/5e675e86095eb8a715070479.jpg

枚举类我也是原封不动拿过来,业务层也报错了

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师