Spring简化Java开发_spring如何简化java开发

1、spring简介

Spring的主要目的是用来替代更加重量级的企业级的java技术

2、spring如何简化java开发

1)基于POJO的轻量级和最小侵入性编程;

2)通过依赖注入和面向接口实现松耦合;

3)基于切面和惯例进行声明式编程;

4)通过切面和模板减少样版式代码。

3、举例说明

3.1 基于pojo的轻量级和最小侵入性编程

传统代码:比如实现一个买自行车的功能。我们需要先继承自行车的店,不然我们不知 道此店都有什么品牌的自行车。

1216875c9c57ea824d6379b6811d6a2f.png自行车厂商

1ad4a3f6ed6dc8a6ec4d6ce36f64a2e2.png购买者

这种继承导致应用与框架绑死,后期在父类上增加什么功能,子类还需要去维护。

spring采用构造器实行(当然spring还有几点注入方式,此处只是用构造器注入)

61dfbc6daba413447e56c208c39f488d.png自行车厂商

03e0ea5dd140786d61e235462f63f335.png购买者

3870ca2d74964bbcde2973a389f4a1dc.png配置bean

eee54d20a656eefc4d21bb5fda7ed777.png测试类

3.2 通过依赖注入和面向接口实现松耦合

任何一个有实际意义的应用,都会由很多个类组成,这些类相互协作来完成特定的任 务。 如果每个对象都负责管理与自己相互协作的对象,这会导致应用高度耦合。通过 DI,对 象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进 行设 定,对 象无需自行创建和管理他们的依赖关系,依赖关系将被自动注入到需要他 们的对象中去。

如上面3.1的 示例,如果有第二大自行车厂商怎么办。传统的方式只能获取那一个厂商 的。通过DI我们可以轻松实现,我们在上面的基础上增加了第二厂商,之后修改buy及配 置bean

88493d25271cf9c079f33311967a3537.png第二厂商

0744b481a700071ed664b699ce87c05a.png购买者

9369c47ffabf1a1be71af62da530e69f.png配置

4adf65c38ae49293179d2bfcef7b3cc5.png测试

3.3基于切面和惯例进行声明式编程

切面编程允许你把遍布在应用各处的功能分离出来形成可重用的组件(例如:常见的 日志、事物)。

比如现在需要在一个方法执行前打印一句“进入可执行方法”这样一段话

传统代码示例:

5c893e7cfa19491ab4ab9b3b5973aa8b.png公共方法

486e592797bf297750a277aaed4f5c43.png一个实现类

此时、如果有AopTest2也要实现,那么还需要将AspectUtils.say();这句话加入 到相应的方法中,很麻烦、而且后期如果修改了方法、那简直就是厄运了。通过 aop可以很好的解决这类问题。示例代码,将AspectUtils变为切面

408e053d566c39ddb5244353827a2b10.png

4aeecd166bd4a769316aaa0e7a96ac44.png配置

a384ef80e6fe889b99147c645f3db5ef.png切面

3.4通过切面和模板减少样版式代码

相信大家都使用过JDBC编程,里面的样板式代码就不用说了,什么连接呀、什么最 后关闭呀,都是一致的。你会发现你要实现的业务层就那么一点,而你的代码却很 长,而且还是和你业务没有什么关系的代码、spring为我们提供了JdbcTemplate来 消除样板式代码,并且spring也集成了Hibernate、mybatis。以及JPA来简化我们 的开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 应用调试神器- ASan

今天有小伙伴跟我他的程序崩溃了要怎么办,刚好我最近做项目使用到这个神器,做应用开发的同学可以看看,可以在C/C上配置使用。不过这仅限于调试,如果你是发布版本,一定要把这个功能关闭。当然,这是我实操的结…

asp.net验证提示美化效果

前段时间做了个ymPrompt提示效果的验证控件,ymPrompt是弹出提示的。弹出提示会增加无畏的鼠标点击动作。前段时间看到园里有位高手写了个纯cssjs的一个效果,我把它和asp.net验证控件结合起来,用这位高手写的效果做为asp.net难控件的提示效果。…

java全栈工程师要求_Java全栈工程师

分布式日志解决方案(ELKKafka)微信登录解决方案微信支付解决方案支付宝支付解决方案微服务持续集成解决方案(Jenkins)Spring Cloud全家桶搭建解决方案分布式事务解解决方案分布式锁解决方案(Redis)微服务网关解决方案(一代Zuul\二代Gateway)微服务集中配置服务解决方案(Config)…

在Linux内核使用Kasan

昨天的文章发出来后,有同学在群里说内核也可以使用这个工具,所以再转发一篇wowo网站的文章,希望对大家有帮助。Linux 应用调试神器- ASan1. 前言KASAN是一个动态检测内存错误的工具。KASAN可以检测全局变量、栈、堆分配的内存发生越界访问等问…

网线有问题?

昨晚网络卡死了。今天换了一条网线。掉包率下降不少。。转载于:https://blog.51cto.com/onlyjoking/398046

跟韦老师聊了一个深夜

自从尚明从韦老师那边离职后,我已经很难得到韦老师的消息了,有时候我也想过去看下他,但是也很难抽的开时间。而且,我们两都挺技术的,如果见面后不知道聊什么,会不会有点尴尬。😄上面那个回复是我…

java面向过程编程怎么写_从面向过程到面向对象,我的编程之路

也许现在新一代的程序员一开始涉足的就是c,C#,Java这类面向对象的语言,如果这样,这篇文章可能得不到他们的认同。 这里,我只想写写我从面向过程到面向对象开发成长中的一些感想而已。我最初学习的语言是basic&#xff…

c#xml操作方法

using System.Xml; //初始化一个xml实例XmlDocument xmlnew XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode rootxml.SelectSingleNode("/root");//获取节点…

急救WINDOWS内存错误

该内存不能为read或written的解决方案 使用Windows操作系统的人有时会遇到这样的错误信息:「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。如果去请教一些「高手」&#xf…

大厂不是铁饭碗

最近的事情有点多前段时间一个以前的朋友,买房找我咨询,问我恒大的房子能不能买,我当时没有给出明确的回复,但是也说了自己的看法。近些年房子越来越贵,我是从15年开始接触房子,不过我从没有想过靠房子来赚…

java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现

这个题目会有多个解法:需要判断n的二进制有几个1first:通过n向右移位&1,如果n的最后为1,那么与1结果为1,(相信大家都会与运算,hashmap就是用与运算)以此来实现,循环判断有多少个1&#xff0…

cesss

件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个转载于:https://blog.51cto.com/wuxh868/402629

python知识点1

1.if __name__ main 的作用 在此函数下的代码,只有当该文件运行的时候才能运行。当前文件如果被当做模块被其他文件导入,该函数下的代码就不会被执行。2.__init__方法在类被实例化之前,先使用__init__方法进行一些初始化操作,如…

java语句中switch_Java中的switch-case语句

在codewar里使用了以下switch-case语句,不熟练出错,所以记录一下。class ArithmeticFunction {public static int arithmetic(int a, int b, String operator) {int result0;switch(operator){case "add":resultab;case "subtract":…

使用valgrind检测内存问题

valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。1valgrind安装可以到官网下载最新的源码包:valgrind官网下载,也可以直接使用 c_utils/debug/valgrind 目录提供的 valgrind-3.13.0.tar.bz2 源码包。首先解压源码包tar xjf valgri…

[转]一个人脸检测器

//本文使用到Emgu.CV库,该库是C#语言对OpenCV的封装,以下是一个列子程序的改正版本。using System; using System.Collections.Generic; using System.Text; using Emgu.CV.Structure; using Emgu.CV;namespace VSL.Plugin.TrackingSystem.SimpleTrackin…

项目中cxf和weblogic整合时报错的问题

GJYW项目使用的weblogic版本是10.3.6,cxf使用的版本是3.1.4 在将项目部署到weblogic服务器上时就会报错,通过下面的方式可以解决weblogic和cxf框架在一起报错的问题(解决了本项目报错的问题,未必全部适用):…

下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了

我和电子圈老江认识了很久,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我。后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群。老江…

java过去配置文件的值_java对.properties配置文件操作

实现运用Java.util.Properties来进行对.properties配置文件操作。配置文件实例:如debug.properties#Tue Mar 21 15:46:17 CST 2017#keyvalueremote.debug.prot7451第一步写个获取文件路径的外部方法//-in- String filePath:配置文件名如debug.properties…

AS3.0中的显示编程(末篇)-- 滤镜(下)

剩下的三种滤镜,因为我自己也不是很懂矩阵啊这些的,只能做些简单的范例和说明了,抱歉!颜色矩阵滤镜、卷积滤镜、置换图滤镜这三种滤镜只能通过AS代码实现。如果说上面的六种滤镜,只是在原图的基础上做些简单的修改&…