0
点赞
收藏
分享

微信扫一扫

springboot初始化bean扫描

小迁不秃头 2022-04-26 阅读 105
java后端

这里主要是扫描自定义注解

public class AnnotationScan implements ApplicationListener{
@Autowired
RedisTemplate redisTemplate;
private final static Logger logger = LoggerFactory.getLogger(AnnotationScan.class);
/**
* 初始化方法 * @param event
*/
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
HashSet set = new HashSet<>();//权限点集合
if(event.getApplicationContext().getParent() == null)
{
Map<String, Object> beans = event.getApplicationContext().getBeansWithAnnotation(RestController.class);//获取全部ControllerBean
Set<Map.Entry<String, Object>> entries = beans.entrySet();//遍历Bean
Iterator<Map.Entry<String, Object>> iterator = entries.iterator();
while(iterator.hasNext()){
Map.Entry<String, Object> map = iterator.next();
Class<> aClass = map.getValue().getClass();
Method[] methods = aClass.getMethods();
for (Method method: methods
) {
AuthAnnotation annotation = method.getAnnotation(AuthAnnotation.class);
if(annotation==null){//有无权限注解
logger.warn(“未作权限限制”);
}else{
String[] authorities = annotation.authorities();
for (String authority: authorities
) {
set.add(authority);//遍历权限点,放入集合中
}
}
}
}
}
}

配置类

@Bean
public AnnotationScan annotationScan(){return new AnnotationScan();}

举报

相关推荐

0 条评论