Springboot Controller引用类,类读取配置文件时读取不到(所有解决过程)

在AD域认证的时候把账号密码服务器地址都放入application.properties配置文件里面了,在Controller引入的时候AD认证类的时候报了空指针异常,错误原因在设置用户名的那一行

本来以为是没有把util这个包(AD认证的类在util包下,LoginController在controller包下)扫描进服务,然后在主配置类AuthApplication 上面加了扫描注解 ComponentScan(com.db.lease.auth.*)

@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中

配置了依旧没有变化依旧读取不到

然后项目经理说试试在类上面也加一个@Component 注解(虽然解决问题的可能性不大,但是先试试)

就是说当我们的类不属于各种归类的时候(不属于@Controller@Services等的时候),我们就可以使用@Component来标注这个类。

依旧没有解决

这时候,我们聪明绝顶的项目经理眼尖的看了我controller引用AD域的时候,用的是new

ADjudge adjude = new ADjudge(); 

经理大佬:这里你引用AD域怎么能用new来引用呢?应该得用@Autowired在前面的时候就定义好,然后它才会有东西的昂
我:嗯…

然后我改成了 @Autowired 引用我的AD域认证类
结果!!!好了!能读取到了
然后我研究了一下@Autowired 定义和new() 对象的区别

@Autowired的作用是什么?
前面通过各种注解将对象作为Bean注入到Spring的工厂里,而@Autowired就是我们从工厂取bean的方式,突然,我明白了!
Bean默认为单例模式

单例模式特点:
单例对象的类只能允许一个实例存在:它只会创建一个实例

而new() 一个类是重新开辟一个新的空间重新再创一个全新的类或对象

所以当我使用new()来引用AD类的时候它是一个全新的空的ADjudge所以才没有数据!

续:后面读取的配置文件有乱码情况,结果发现是我AD.searchFilter 少写了一个等于号,然后让searchFilter =searchFilter +userId; 得到的是:sAMAccountName=cys 即可 ,具体可以看我前面写的AD域认证的博客了解了解:https://blog.csdn.net/weixin_46573158/article/details/117461134?spm=1001.2014.3001.5501

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值