【移动应用开发技术】如何在Android环境下支持Spring框架下得AOPDIAspect等_第1页
【移动应用开发技术】如何在Android环境下支持Spring框架下得AOPDIAspect等_第2页
【移动应用开发技术】如何在Android环境下支持Spring框架下得AOPDIAspect等_第3页
【移动应用开发技术】如何在Android环境下支持Spring框架下得AOPDIAspect等_第4页
【移动应用开发技术】如何在Android环境下支持Spring框架下得AOPDIAspect等_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】如何在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论