版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】如何在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东农工商职业技术学院单招职业技能笔试模拟试题带答案解析
- 感染性疾病护理策略与预防
- 个性化医疗与精准治疗
- 2026年广西生态工程职业技术学院高职单招职业适应性测试备考题库有答案解析
- 医疗信息化在公共卫生事件应对中的策略
- 2026年贵州轻工职业技术学院单招综合素质笔试备考试题带答案解析
- 2026年安庆师范大学高职单招职业适应性测试参考题库有答案解析
- 医院医疗质量管理与医疗质量提升措施分析
- 财政国库业务培训课件
- 2026年沧州职业技术学院高职单招职业适应性测试模拟试题有答案解析
- 2026年大连职业技术学院单招职业技能笔试参考题库带答案解析
- 员工通勤安全培训课件
- (自2026年1月1日起施行)《增值税法实施条例》的重要变化解读
- 2025年游戏陪玩分成协议
- 全国秸秆综合利用重点县秸秆还田监测工作方案
- 2026年内蒙古化工职业学院单招职业适应性考试参考题库及答案解析
- 国家事业单位招聘2024国家水利部小浪底水利枢纽管理中心招聘事业单位人员拟聘用人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 核生化应急救援中心火灾预案
- 25数五上数学人教版期末押题卷5套
- 2026年辽宁金融职业学院单招职业适应性测试题库及参考答案详解
- 2026年教师资格之中学综合素质考试题库500道及完整答案【名师系列】
评论
0/150
提交评论