版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】如何在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年卫星导航定位系统项目资金申请报告代可行性研究报告
- 幼师国旗下的讲话演讲稿(31篇)
- 金蟒蛇读后感
- 关于安全大讨论个人心得体会800字(3篇)
- 择业与理想演讲稿
- 有关劳动合同
- 高考地理二轮复习综合题专项训练2原因分析类含答案
- 辽宁省朝阳市2024-2025学年高一上学期第二次联考英语(含答案无听力原文及音频)
- 广东省广深珠联考2024-2025学年高三上学期11月期中物理试题(无答案)
- 围棋-2023年中考语文十大传统文化考点解析
- 初中体育与健康人教九年级(2023年修订) 田径初三跨栏教案
- DB13T 5216-2020 建设用地土壤污染风险筛选值
- 金坛区苏科版六年级上册劳动《09T形路口信号灯》课件
- 教科版科学五年级上册《摆的快慢》学习任务单
- 三年级数学上册课件-8.1分数的初步认识 - 人教版(共15张PPT)
- 车间注塑工艺表
- 公司电动三轮车使用管理规定
- 摩托罗拉328-338系列写频软件教程
- 生活自理能力评价量表完整优秀版
- 《太阳出来喜洋洋》 课件
- 《管理会计》课程标准
评论
0/150
提交评论