点击上方 "程序员小乐"关注, 星标或置顶一起成长
每天凌晨00点00分, 第一时间与你相约
每日英文
I will care even more for those who care about me. For those who don't care,why should I care?
在乎我的人,我会加倍在乎!不在乎我的人,你凭什么让我继续在乎?
每日掏心话
有一天你会明白,善良比聪明更难。聪明一种天赋,而善良是一种选择。
来自:Dulk | 责编:乐乐
链接:cnblogs.com/deng-cc/p/9415279.html
程序员小乐(ID:study_tech)第 813 次推文 图片来自百度
往日回顾:微博5.38亿条用户数据暗网出售, 你的信息一毛不值!
正文
一直想能仿公司框架的形式,着手做一个简单的脚手架,一来是带着目标性能更好地学习,接触新的技术,另外自己如果有什么想要实现的简单需求,就可以进行快速开发,主要还是希望能在权限上有所控制,所以最花时间的还是在Shiro上。
zheng(https://gitee.com/shuzheng/zheng) 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块
ES(https://github.com/zhangkaitao/es) JavaEE企业级项目的快速开发的脚手架,提供了底层抽象和通用功能,拿来即用
renren-security(https://www.renren.io/) 轻量级权限管理系统
lenos(https://gitee.com/bweird/lenosp) 快速开发模块化脚手架
参考链接:
为什么要搭建多模块项目?
Maven最佳实践:划分模块(http://juvenshun.iteye.com/blog/305865)
maven构建企业级多模块项目(最好的划分模块方式)(https://blog.csdn.net/program_guys/article/details/76407360)
多模块项目如何搭建?
Maven的多模块 Spring MVC + Spring + Mybatis 项目的搭建(http://www.leeyom.top/2017/08/01/tech-maven-multi-module-ssm/)
SpringBoot多模块项目实践(Multi-Module)(https://segmentfault.com/a/1190000011367492)
Shiro下简单的RBAC(Realm及相关对象)(http://jinnianshilongnian.iteye.com/blog/2022468)
另外需要注意的是,SpringBoot中 的 Bean 扫描默认为 Application.java 所在包及子包,所以哪怕是多模块,也请注意包名的问题,并调整 Application.java 的位置,否则很容易出现找不到 Bean 注入的情况。
@Repository@Mapperpublicinterface RoleDao { int deleteByPrimaryKey(Long id); int insert(Role record); int insertSelective(Role record); Role selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(Role record); int updateByPrimaryKey(Role record); Set<Role> findAll(); Set<Role> findByUserId(Long userId);}
在 SpringBoot 和 Shiro 的集成中,Shiro的配置通常是使用一个自定义配置类,通过在方法上使用 @Bean 注解来将配置注册成 Bean,如下:
@Configurationpublicclass ShiroConfig {@Beanpublic Realm realm() { returnnew MyRealm(); }@Beanpublic ShiroFilterChainDefinition shiroFilterChainDefinition() { DefaultShiroFilterChainDefinition chain = new DefaultShiroFilterChainDefinition(); //todo "/anon" not useful chain.addPathDefinition("/anon/*", "anon"); chain.addPathDefinition("/authc/*", "authc"); return chain; }}
那么在自定义的Realm中还需要单独的注解(如 @Component)标记吗?答案是不需要。如下,哪怕它之中还需要用到其他的 Bean 组件,也不需要再单独做组件注解了(加上反而因为和 @Bean 的方式冲突报错):
//无需 @Componentpublicclass MyRealm extends AuthorizingRealm { @Autowired private UserService userService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { returnnull; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { //... returnnull; }}
另外需要注意的是,在配置url访问权限时,如下两种写法请注意:
chain.addPathDefinition("/anon/*", "anon"); //有效
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。
猜你还想看
阿里、腾讯、百度、华为、京东最新面试题汇集
统一异常处理介绍及实战,看这篇就对了!
Java对象不再使用时,为什么要赋值为 null ?
GitHub宣布收购npm,微软或成最大赢家!开源界野蛮竞争影响1200万开发者
文章有问题?点此查看未经处理的缓存