1、spring简介
Spring的主要目的是用来替代更加重量级的企业级的java技术
2、spring如何简化java开发
1)基于POJO的轻量级和最小侵入性编程;
2)通过依赖注入和面向接口实现松耦合;
3)基于切面和惯例进行声明式编程;
4)通过切面和模板减少样版式代码。
3、举例说明
3.1 基于pojo的轻量级和最小侵入性编程
传统代码:比如实现一个买自行车的功能。我们需要先继承自行车的店,不然我们不知 道此店都有什么品牌的自行车。
自行车厂商
购买者
这种继承导致应用与框架绑死,后期在父类上增加什么功能,子类还需要去维护。
spring采用构造器实行(当然spring还有几点注入方式,此处只是用构造器注入)
自行车厂商
购买者
配置bean
测试类
3.2 通过依赖注入和面向接口实现松耦合
任何一个有实际意义的应用,都会由很多个类组成,这些类相互协作来完成特定的任 务。 如果每个对象都负责管理与自己相互协作的对象,这会导致应用高度耦合。通过 DI,对 象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进 行设 定,对 象无需自行创建和管理他们的依赖关系,依赖关系将被自动注入到需要他 们的对象中去。
如上面3.1的 示例,如果有第二大自行车厂商怎么办。传统的方式只能获取那一个厂商 的。通过DI我们可以轻松实现,我们在上面的基础上增加了第二厂商,之后修改buy及配 置bean
第二厂商
购买者
配置
测试
3.3基于切面和惯例进行声明式编程
切面编程允许你把遍布在应用各处的功能分离出来形成可重用的组件(例如:常见的 日志、事物)。
比如现在需要在一个方法执行前打印一句“进入可执行方法”这样一段话
传统代码示例:
公共方法
一个实现类
此时、如果有AopTest2也要实现,那么还需要将AspectUtils.say();这句话加入 到相应的方法中,很麻烦、而且后期如果修改了方法、那简直就是厄运了。通过 aop可以很好的解决这类问题。示例代码,将AspectUtils变为切面
配置
切面
3.4通过切面和模板减少样版式代码
相信大家都使用过JDBC编程,里面的样板式代码就不用说了,什么连接呀、什么最 后关闭呀,都是一致的。你会发现你要实现的业务层就那么一点,而你的代码却很 长,而且还是和你业务没有什么关系的代码、spring为我们提供了JdbcTemplate来 消除样板式代码,并且spring也集成了Hibernate、mybatis。以及JPA来简化我们 的开发。