




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】如何在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于bim合同样本
- 会议家具采购合同标准文本
- 铁路货车装车机行业跨境出海战略研究报告
- 高性能热塑性树脂基复合材料企业制定与实施新质生产力战略研究报告
- 船舶用夹层玻璃行业直播电商战略研究报告
- 钢瓶柜企业制定与实施新质生产力战略研究报告
- 玻璃瓦行业跨境出海战略研究报告
- 高压化肥设备用无缝钢管行业跨境出海战略研究报告
- 隧道地基工程企业制定与实施新质生产力战略研究报告
- 钻探设备行业直播电商战略研究报告
- (高清版)TDT 1036-2013 土地复垦质量控制标准
- 华润认知能力测评题
- 大学生朋辈心理辅导智慧树知到期末考试答案2024年
- 社会稳定风险评估 投标方案(技术标)
- 两位数除以一位数(有余数)计算题200道
- 产后早开奶好处健康宣教
- 婚姻家庭指导服务工作方案
- 2024届江苏省期无锡市天一实验校中考联考英语试题含答案
- 北师大版数学三年级下册《长方形的面积》
- 助产士的产妇心理疏导与支持技巧
- 八年级黄金矩形(公开课)
评论
0/150
提交评论