请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

aop问题

大目老师,我把CheckLogin和CheckAuthorization 抽出来做成一个jar后 校验都无效的,是怎么回事

正在回答 回答被采纳积分+3

1回答

大目 2019-10-22 16:49:38

处理CheckLogin和CheckAuthorization的类(视频里是AuthAspect),由于上面加了@Component注解,所以要放在能够扫描到的地方,否则这个类不会初始化。

默认情况下,启动类会扫描启动类所在的包及其子包(这个扫描规则,其实在6-6 细粒度配置自定义01-Java代码方式    6-7 细粒度配置自定义02-父子上下文 有提到)。

所以解决方案如下,任选一种即可

  1. 在启动类上,人工加上@ComponentScan注解,扫描你AuthAspect所在的包

  2. 将AuthAspect放在启动类能够扫描到的地方,例如启动类在com.itmuch下面,那么你AuthAspect所在的包可以规划成com.itmuch.common或者其他。总之要在启动类所在的包或者子包

  3. 去掉AuthAspect上的@Component注解,在应用上加上:

@Bean
public AuthAspect authAspect(){
    new AuthAspect();
}

也就是让使用者自己去初始化。


0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎146535 #1
    使用第一个方案启动后
    Parameter 0 of constructor in slan.auth.AuthAspect required a bean of type 'slan.util.JwtOperator' that could not be found.
    报JwtOperator找不到
    回复 有任何疑惑可以回复我~ 2019-10-22 17:39:40
  • 大目 回复 提问者 慕虎146535 #2
    一样的道理啊,jwtoperator也得遵循。
    jwtoperator也得扫描到。
    回复 有任何疑惑可以回复我~ 2019-10-22 17:44:02
  • 提问者 慕虎146535 回复 大目 #3
    使用方案3解决了,但是还有一个问题,这样的话每个工程都要注入AuthAspect、jwtoperator 这样会不会重复太多
    回复 有任何疑惑可以回复我~ 2019-10-22 18:53:13

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信