0解决问题:初衷-sping整体流程扫描

文章讲述了在遇到Redis注入失败的问题时,从基础不扎实到解决思路错误,最终发现是引入包失败导致的注入问题。通过在启动类上添加@ComponentScan注解解决了问题,同时强调了Spring的约定大于配置理念和静态与非静态变量的使用区别。
摘要由CSDN通过智能技术生成

初衷

“听君一席话,胜读十年书”。很感激我的领路人。
我想把这些记录下来,不忘初心。
大家工作几年之后都能从菜鸟成长为中级程序员,能解决业务问题上的90%问题,但是与高级程序员不同的就是:在遇到问题的时候解决问题的思路。
1基础掌握的不扎实
2解决问题的思路从一开始就错了

sping整体流程扫描

抛砖引玉
背景:redis注入失败
问题:redis注入失败,报错“template not initialized; call afterPropertiesSet() before using it
解决:首先以为是没有初始化,尝试不使用@rescore注入,而是使用// private static final RedisTemplate redisTemplate = new RedisTemplate<>();静态注入
然后再

//        /**必须执行这个函数,初始化RedisTemplate*/
//        redisTemplate.afterPropertiesSet();

发现还是不行,报错“java.lang.illegalargumentexception”。类似的都是报错没有实例化没有初始化.还是使用@rescore
这时候师傅就直接点出来-引入包失败导致注入失败
作为菜鸡的我当然不知道为什么能一眼看出来这个错误
最后通过在启动类上添加注解,显式“@ComponentScan(basePackages = {"该A包路径", "要引入的B包的路径"})
因为我在B包里面有个非静态引入的变量redisTemplate(@rescore注入)
知识补充:静态方法和静态变量直接使用类名.xx获取;非静态变量只能使用方法.xx获取

sping的理念

“约定大于配置,配置大于代码”
比如rescore文件夹下 放配置文件,target文件夹下 放class编译文件这种约定,以前打包的时候需要按照约定 自己把各种各样的文件归类放置。
比如以前连接数据库是在代码中有JDBC自己创建连接,但是spring之后就可以直接在配置文件中把数据库配置添加即可。以前使用xml配置,后来使用application

Spring Boot 升级到 2.7.18 后,如果您的 Spock 单元测试开始报错,这可能是由于版本更新带来的兼容性问题,特别是当 Spring Boot 或其依赖库有较大变动时。Spock 是一个用于 JVM 的 BDD 测试框架,它可能需要与 Spring Boot 新版本的一些更改同步。 以下是可能导致错误的一些原因及解决建议: 1. **依赖冲突**:检查是否有新的 Spring Boot 版本引入了与 Spock 不兼容的依赖。尝试更新 Spock 和其他相关测试库到最新稳定版本,看看是否能解决问题。 ```groovy implementation 'org.spockframework:spock-core:<latest_version>' testImplementation 'org.springframework.boot:spring-boot-starter-test' ``` 2. **API变化**:查看 Spring Boot 文档中的迁移指南,确认是否有已弃用或变更的行为影响到了 Spock。如果有,您可能需要调整测试代码以适应新API。 3. **Spring Boot Test 模块**:确保使用的 `spring-boot-starter-test` 包与您的项目兼容。如果可能,可以单独排除旧版测试模块并引入特定版本。 4. **测试环境设置**:确认测试环境中是否存在与新版本不兼容的配置或插件。例如,某些第三方插件可能需要更新才能与 Spring Boot 2.7.18 配合良好。 5. **代码改动**:检查更新代码的部分,看是否无意中破坏了原有的测试结构。有时候简单的语法更改也可能导致测试失败。 如果以上步骤都试过还是无法解决问题,提供具体的错误日志会更有帮助,以便于分析和定位问题。同时,请问:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耳东哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值