springboot配置相关的坑

pom.xml

修改之后马上重新加载一下。

不然IDEA不会给你更新
在这里插入图片描述

添加的文件要求

该加的加,不该加的别加。

貌似spring里面各个库里面有依赖关系。而且,里面的依赖只是根据名称判断的。
这种情况下,编译能通过,但是运行会报错。
推测java这个地方使用了解释型执行的方式,灵活但是不严谨。

bootstrap.yml 的依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>

就是这么坑。我把工程从头到尾清理了一遍才发现这个问题。
加载正确了是这个图标

加载不正确的话
在这里插入图片描述

各种报错

required a bean of type

Parameter 1 of constructor in xx.xxxx.xxxx.xxxx required a bean of type 'xx.xx.xxxx.xxx' that could not be found.

如果你这个类是从别的模块引用的,就需要在启动类那里添加一行。类似
@ComponentScan(basePackages = {“cn.xxx.xxxx.XXXX”})

模块引用

就是一个工程中,通常将公共的方法类放在一个模块中。
方法就是在pom.xml中添加

        <dependency>
            <groupId>cn.dddd</groupId>
            <artifactId>xxx-aaaaa-bbb</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

启动类前面添加
@MapperScan({“cn.sss.eeee.ttt”,“cn.sss.dddd.qqqq”})
@ComponentScan(basePackages = {“cn.sss.dddd.qqqq”}) //因为程序默认只扫描当前目录下的,因为此处引用了别的地方的,所以这里要添加上。

你自己尝试写个简单的demo测试一下就明白了。

不建议在你自己的代码中引用自己工程中模块

建议:直接复制java文件吧。
因为:
1,容易引起你的jar包体积急剧增大。我猜测打包好的jar包里面把所有的依赖都包含了。
(不信你就试试)
2,引起你的@RestController不起作用了,也就是接口访问不了了。
编译运行都没报错。但是接口就是访问不了; 端口是通的,但是就是不行。
我比较了一下,只要是使用了这种方法

@ComponentScan(basePackages = {"cn.dd.ttt","cn.ss.mmm"}) //因为程序默认只扫描当前目录下的,因为此处引用了别的地方的,所以这里要添加上

就会出现访问的问题。
没加@ComponentScan的话,springboot报的是bean的错误。
这个bug我找了一天,把代码一点一点的堆上去才定位到问题出在哪里。

我尝试创建了一个Filter来看看请求进来了没有。结果发现,这个Filter没有被初始化。
参考:SpringBoot配置一个过滤器获取远程地址、访问路径等信息,然后我就不再研究了。

总结

感觉java语言太不严谨了。
编译器或者说运行时报的错误提示都不太准确,只能bing或者google。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值