Spring框架的优势是什么?

跟我一起看看传统的Javaweb开发会遇到什么困惑。

- 传统Javaweb开发代码分析-用户模块

困惑一:层与层之间紧密耦合在了一起,接口与具体实现紧密耦合在了一起。

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象。

困惑二:通用的事务功能耦合在业务代码中,通 用的日志功能耦合在业务代码中

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象,代理对象内部动态结合业务和通用功能


一、 IoC控制反转思想的提出

实际开发中,对象之间的耦合关系,就类似手表内部的齿轮,每个齿轮都紧密啮合在一起,一旦某个齿轮发生故障 ,那么整个系统也意味着崩溃。尽可能让对象之间的关系保持松耦合状态是我们期望的。

IoC思想: Inversion of Control,翻译为“控制反转”或“反转控制”,强调的是原来在程序中创建Bean的权利反转给第三方。

例如:原来在程序中手动的去 new UserServiceImpl(),手动的去new UserDaoImpl(),而根据IoC思想的指导,寻求一个第三方去创建UserServiceImpl对象和UserDaoImpl对象。这样程序与具体对象就失去的直接联系。

谁去充当第三方角色呢?

工厂设计模式,BeanFactory来充当第三方的角色,来产生Bean实例

BeanFactory怎么知道产生哪些Bean实例呢?

可以使用配置文件配置Bean的基本信息,BeanFactory根据配置文件来生产Bean实例

例如,用IoC思想去反转UserServiceImpl的创建权,由原来程序中创建反转给通过BeanFactory去创建

二、DI依赖注入思想的提出

上面使用BeanFactory的方式已经实现的"控制反转",将Bean的创建权交给了BeanFactory,如果我们想将UserDao的创建权也反转给BeanFactory,与此同时UserService内部还需要用到UserDao实例对象,那应该怎样操作呢?

该方式是否存在一些问题?

UserService存在于BeanFactory中, UserDao也存在于BeanFactory中, 可以在BeanFactory内部进行结合。

将UserDao在BeanFactory内部设置给UserService的过程叫做“注入”,而UserService需要依赖UserDao的注入才能正常工作,这个过程叫做“依赖注入” 。

将UserDao在BeanFactory内部设置给UserService的过程叫做“注入”,而UserService需要依赖UserDao的注入才能正常工作,这个过程叫做“依赖注入

将UserDao在BeanFactory内部设置给UserService的过程叫做“注入”,而UserService需要依赖UserDao的注入才能正常工作,这个过程叫做 “依赖注入

面试题:IoC 和 DI 的关系?

首先,先回答IoC和DI的是什么:

其次,在回答IoC和DI的关系:

三、AOP面向切面思想的提出

IoC和DI思想主要是解决前面我们的困惑一,困惑二还没有解决

困惑一:层与层之间紧密耦合再了一起,接口与具体实现紧密耦合在一起。

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象

困惑二:通用的事务耦合再业务代码中,通用的日纸功能耦合再业务代码中。

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象,代理对象内部动态结合业务和通用功能

困惑二的解决方案是,借助于IoC思想,将Bean的创建权反转给BeanFactory,而BeanFactory生产的Bean是目标Bean的代理对象,这样就可以在代理对象中对目标对象方法进行相应的增强。

AOP,Aspect Oriented Programming,面向切面编程,是对面向对象编程OOP的升华。OOP是纵向对一个 事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而用这种思维去设计编程的方式叫做面向切面编程

三种思想总结

1)IoC控制反转,是将程序创建Bean的权利反转给第三方;

2)DI依赖注入,某个完整Bean需要依赖于其他Bean(或属性)的注入;

3)AOP面向切面编程,用横向抽取方法(属性、对象等)思想,组装成一个功能性切面。

四、Ioc、DI、AOP思想提出

- 框架概念的出现

上面提出了一些思想来解决遇到的问题,而这些思想的实现就需要通过编码去落地,往往我们把具备一定业务领域解决方案的"工具"称为框架。

框架的基本特点:

Java中常用的框架:

不同语言,不同领域都有属于自己的框架,使用框架开发是作为程序员的最基础的底线。Java语言中的框架,

可以分为基础框架和服务框架:

五、思想、框架和编码的关系

- 架构师(高级程序员):把思想落地变为实现的人,例如上面的设计和BeanFactory的编写,即框架的设计和实现者。

- 程序员:使用框架完成业务的人,其中UserServiceImpl、beans.xml、测试类都是我们编写的。

六、Spring框架的诞生

spring是一个开源的轻量级Java开发应用框架,可以简化企业级应用开发。Spring解决了开发者在JavaEE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。是当前企业中Java开发几乎不能缺少的框架之一。Spring的生态极其完善,不管是Spring哪个领域的解决方案都是依附于在Spring Framework基础框架的。

展开阅读全文

页面更新:2024-04-23

标签:框架   切面   困惑   对象   优势   过程   思想   关系   代码   业务   程序

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top