真是傑作呢
浪漫主义coder

运行springboot项目报错o.s.b.d.LoggingFailureAnalysisReporter,查资料试着查一下端口占用8080。

netstat -aon|findstr 8080

发现8080端口被进程8768占用。

 查找8768进程的程序

tasklist|findstr 8768

发现是腾讯会议。。。

 退出了再试试,还是没解决问题。。很好,排除一个错误选项(虽然可能也会出问题)

尝试在启动类注解后加上(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}),没啥变化。也有说引入了springboot security的依赖,看了下并没有。

细细看了眼描述,晕,找不到mapper文件

 阿里云查到一篇文章解决方案 --[restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :-阿里云开发者社区 (aliyun.com)

我去,居然是spring框架4.0不支持@Autowired注解,文中提供了几种解决方案,继续试吧

 将@Autowired改成@Qualifier注入,终于成功启动springboot了

经典版本问题,下次记得看description

————————————————————————————————————————————————————————————————

本以为今天差不多能跑了,访问了下网页端localhost:8080/queryUserList,经典空指针异常

 继续查资料。。有的说是没有引入注解导致的,难道是@Qualifier和@Autowired的注入方式不同?看来得研究下这两个注解。

来自Spring 注解 @Qualifier 详细解析 - 知乎 (zhihu.com)

使用 @Autowired 注解是 Spring 依赖注入的绝好方法。但是有些场景下仅仅靠这个注解不足以让Spring知道到底要注入哪个 bean。

Spring 不知道要注入哪个 bean。为了避免这个问题,有几种解决方案。那么我们本文要讲解的 @Qualifier 注解就是其中之一。

   @Component
    public class FooService {
        @Autowired
        @Qualifier("fooFormatter")
        private Formatter formatter;
        
        //todo 
    }

通过将 @Qualifier 注解与我们想要使用的特定 Spring bean 的名称一起进行装配,Spring 框架就能从多个相同类型并满足装配要求的 bean 中找到我们想要的,避免让Spring脑裂。我们需要做的是@Component或者@Bean注解中声明的value属性以确定名称。

先看这么多,剩下的还没到看懂的水平,只能说多积累经验吧,感觉spring的坑也不少,虽然是直接从springboot上手的。

把@Autowired加回去后果然又开始报错了,只能尝试别的注入方法了。

改bug一直有点累,这边查点小知识,是关于java web开发中涉及到的各种层,java web开发中的各种层 - 知乎 (zhihu.com),籍于此,也了解了Dao层(Data Access Object)是用来持久化数据的,即数据库的各项操作,那不就是mapper层实现对象到数据库的映射嘛!

又仔细检查了一下,发现mapper层的xml的数据库指定错了,再重新试一下。没什么卵用,不过预防了下一个bug。

又查了一个文章@Resource、@Autowired、@Qualifier的注解注入及区别 - 小猴子先生 - 博客园 (cnblogs.com)

1、@Resource 默认根据名字注入,其次按照类型搜索

2、@Autowired 根据类型注入

3、@Autowired @Qualifie("userService") 两个结合起来可以根据名字和类型注入

难道说@Qualifier单独使用就不行吗,不不,应该只是配合使用比较方便。

————————————————————————————————————————————————————————————————————————

请了个java组师兄来帮忙,解决了两个问题:1.上面的@Autowired自动注入必须加上,至于之前那个找不到Javabean的问题,需要加上@MapperScan注解来扫描到这个文件。这里发现不存在@MapperScan注解,需要加入新的依赖。

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>

刷一下maven之后有了新注解。利用扫描终于找到了这个文件。

2.还是之前空指针异常的问题。这里是mapper层的地址没有改正,由于包下套了包,文件结构目录有点混乱,导致项目找不到相应的映射文件。改完后成功实现到数据库的映射。

 

posted on   真是傑作呢  阅读(9)  评论(0编辑  收藏  举报
努力加载评论中...

欢迎阅读『springboot学习日记(二)』
点击右上角即可分享
微信分享提示