




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】如何在Android环境下支持Spring框架下得AOP,DI,Aspect等
大家都知道,Spring在JavaEE开发中扮演着非常重要的地位。
可以利用它的依赖注入(DI)很好的实现各个模块直接的解耦。
可以利用它的AOP很好的实现面向方面的编程,实现与事务无关的业务逻辑(事务代码写在切面中)
可以使用不同的注解(@Controller;@Service;@Repository)很好的实现分成架构,表明各个模块的作用
可以用MVC实现的Controller很好的处理请求和响应客户端请求
可以轻松的使用集成其他第三方组件实现的功能等。
那这么好的功能,如何能在Android上使用呢,服务于Android开发者呢?
现在给大家推荐一个第三方库,可以很方便的集成到您的应用里面,获取以上这些功能
现在给大家推荐一个第三方库,可以很方便的集成到您的应用里面,获取以上这些功能项目地址:/hianzuo/android-springAndroid-springisaandroidlibraryprojectsupportIOC,DI,AOPandHTTP/Handler,ituseannotationtoconfig。Itcontainsasimpleproject.Addthedependencydependencies{
compile'com.hianzuo.android:LibSpring:1.0.4'
}InitspringfromApplicationpublicclassSimpleApplicationextendsApplication{
@Override
publicvoidonCreate(){
super.onCreate();
//ifindevmode,pleaselineblowcode
SpringInitializer.devMode();
//springinit,youcanaddmorepackagetoscanspringcomponent.
SpringInitializer.init(this,
"com.hianzuo.spring.simple.test.",
"otherpackagetoscanspringcomponent");
}
}DISupportinActivitypublicclassMainActivityextendsAppCompatActivity{
@Resource
privateTestServicetestService;
@Resource
privatePrintServiceprintService;
@Resource(beanName="testBean")
privateBeanTesttestBean;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
testService.handle();
setContentView(R.layout.activity_main);
TextViewtv=findViewById(R.id.tv);
tv.setText(printService.print()+"\n\n"+testBean.getText());
}
}ConfigurationBean@Component
@Configuration
publicclassTestConfiguration{
@Bean("testBean")
publicBeanTestbean1(){
returnnewBeanTest("beannameinannotation");
}
@Bean
publicBeanTestmethodIsBeanName(){
returnnewBeanTest("methodisbeanname");
}
}AOP@Aspect
publicclassTestServiceAspect{
@Pointcut("^.*?handle\\(\\).*+$")
publicvoidhandle(){
System.out.println("AAATestServiceAspecthandle");
}
@Before("handle")
publicvoidbefore(JointPointpoint){
System.out.println("AAATestServiceAspectbefore");
}
@Around(value="handle")
publicObjectaround(JointPointpoint){
System.out.println("AAATestServiceAspectaroundstart");
Objectresult=point.invokeResult();
System.out.println("AAATestServiceAspectaroundend");
returnresult;
}
@After(value="handle")
publicvoidafter(JointPointpoint){
System.out.println("AAATestServiceAspectafter");
}ServiceAnnotationSupport@Service
publicclassTestServiceImplimplementsTestService{
@Resource
privatePrintServiceprintService;
@Resource(beanName="testBean")
privateBeanTesttestBean;
@Resource(beanName="methodIsBeanName")
privateBeanTesttestBean1;
@Override
publicvoidhandle(){
printService.print();
System.out.println("AAABeanTest:"+testBean.getText());
System.out.println("AAABeanTest1:"+testBean1.getText());
System.out.println("AAATestService.handle.");
}
@Override
publicvoidexecute(){
System.out.println("AAATestService.execute.");
}
}CacheSupport@Component
publicclassDemoProviderImplextendsAbstractCacheAble<Integer,Demo>{
@Override
protectedIntegergetKey(Demodemo){
returndemo.getId();
}
@Override
protectedList<Demo>loadData(){
//loadDemodatafromremoteserverordatabase
ArrayList<Demo>list=newArrayList<>();
list.add(newDemo(1,"aaa"));
list.add(newDemo(2,"bbb"));
returnlist;
}
}HttpHandlerSupport@Handler("/api/login")
publicclassHttpLoginHandlerextendsBaseHandler{
@Override
protectedObjectgetMethodParamObjectByType(Class<?>type){
if(type==LoginData.class){
Stringusername=(String)getMethodParamObject("username");
Stringpassword=(String)getMethodParamObject("password");
returnnewLoginData(username,password);
}
returnsuper.getMethodParamObjectByType(type);
}
@Override
protectedObjectgetMethodParamObject(Stringvalue){
//getvaluefromrequest.
//demorequest.getParameter(value);
returnnull;
}
@CheckMethod
protectedStringcheck(@MethodParam("username")Stringusername){
if(StringUtil.isEmpty(username)||username.trim().length()<4){
throwsnewRuntimeException("用户名不能为空");
}
returnnull;
}
@Resource
privateLoginServiceloginService;
//youcanuse@MethodParamAnnotationtogetparameter
/*@HandleMethod
publicvoidhandle(@MethodParam("username")Stringusername,@MethodParam("password")Stringpassword){
loginService.login(username,password);
}*/
//youcangetDataModelinMethodParam,registerin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年聚砜PSF合作协议书
- 教育技术革新增强现实在课堂中的探索与实践
- 教育游戏化提升学生自主学习能力的关键
- 学堂在线 形势与政策 章节测试答案
- 探讨教育中的VR技术创新与实践
- 大数据时代下的智慧医疗与教育变革
- 影响施工进度的因素分析
- 中职数学参赛课件
- 探索科技在办公领域的应用与变革
- 2025年广西玉林高中物理高二第二学期期末质量跟踪监视试题含解析
- 2025年四川省高考生物试卷真题(含答案解析)
- 2025年浙江省中考数学试卷真题(含官方标准答案)
- 2025版国家开放大学法学本科《知识产权法》期末纸质考试总题库
- 职业技能培训鉴定教材编写规定
- 喷雾干燥器课程设计终稿
- 2023年潍坊市交通投资有限公司招聘笔试题库及答案解析
- 住院医师规范化培训小讲课教学设计课件
- 酸化土壤改良技术规范DB50-T 1146-2021
- 英威腾GD变频器调试说明
- 季节性施工专项施工方案(常用)
- 仓库作业指导书
评论
0/150
提交评论