基于Spring注解实现工厂模式
来源:互联网 发布:网络教育本科费用 编辑:程序博客网 时间:2024/06/01 10:34
前面看到了南寒之星的一篇文章,地址:https://my.oschina.net/u/923324/blog/832269,通过自己写扫描java文件的类来自动注入工厂模式中接口的实现类。
然后今天想到了一个更简单的方法,而且更回归Spring的本源。
关键点:利用@Autowired,自动注入指定接口实现类到List中。不用自己写复杂的扫描类。
直接上代码。
接口代码:
/** * 获取用户信息的接口 * Created by daniel on 2017-05-08. */public interface IUserInfoService { /** * 获取该实例支持的用户类型 * @return */ public String getSupportUserType(); /** * 根据用户名和类型获取用户信息 * @param userName 用户名 * @param userType 用户类型 * @return 用户信息 */ public UserInfo getUserInfo(String userName, String userType); /** * 根据userToken获取用户信息 * @param userToken * @return */ public UserInfo getUserInfo(String userToken); /** * 获取用户具备的权限列表,用于权限判断 * @param userName * @param userType * @return */ public List<String> getUserPermissions(String userName, String userType);}
Factory类,第4、5行即为关键代码,能将IUserInfoService的所有子类注入到List中。
public class UserInfoServiceFactory { @Autowired private List<IUserInfoService> iUserInfoServices; public IUserInfoService getUserInfoService(String type) { IUserInfoService userInfoService = null; for (IUserInfoService tmpService : iUserInfoServices) { if (tmpService.getSupportUserType().equals(type)) { userInfoService = tmpService; break; } } return userInfoService; }}
代码比之前的简单了很多,哈哈!
阅读全文
3 0
- 基于Spring注解实现的工厂模式
- 基于Spring注解实现工厂模式
- 基于注解spring AOP实现
- quartz 基于spring注解实现
- spring注解模式的实现
- spring基于注解实现定时任务
- 基于spring注解实现定时任务
- 基于注解的spring AOP简单实现
- 基于spring注解切面的简单实现
- Spring 基于 Aspect 注解的增强实现
- Spring-AOP基于JAVA注解实现
- spring MVC注解模式的经典实现
- Spring简单配置-基于工厂模式装载bean
- 基于配置文件的工厂设计模式实现,并且做到对象的单例,类似于spring的ioc
- spring和ehcache整合,实现基于注解的缓存实现
- Spring基于注解详解
- spring aop 基于注解
- Spring aop基于注解
- android中实现对多个EditText的监听
- 关于fragment嵌套fragment,第一次能加载布局,第二次不能加载布局的问题
- Highway 湘潭邀请赛(江苏省赛)----树的直径
- 枚举进程中的模块
- 10-排序6 Sort with Swap(0, i) (25分)
- 基于Spring注解实现工厂模式
- codevs1711/洛谷P1436棋盘分割(noi1999)
- tensor flow dynamic_rnn 与rnn有啥区别?
- 基于OpenCV的离散正弦变换
- XTU 1264 Partial Sum 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛(湖南)
- HDU-5877-Weak Pair
- 机器学习-周志华-个人练习11.3
- Java健壮的单例模式
- Codeforces Round #362 (Div. 2) D Puzzles