初衷
“听君一席话,胜读十年书”。很感激我的领路人。
我想把这些记录下来,不忘初心。
大家工作几年之后都能从菜鸟成长为中级程序员,能解决业务问题上的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