Spring框架的优势是什么?
跟我一起看看传统的Javaweb开发会遇到什么困惑。传统Javaweb开发代码分析用户模块
困惑一:层与层之间紧密耦合在了一起,接口与具体实现紧密耦合在了一起。
解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象。
困惑二:通用的事务功能耦合在业务代码中,通用的日志功能耦合在业务代码中
解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象,代理对象内部动态结合业务和通用功能
一、IoC控制反转思想的提出
实际开发中,对象之间的耦合关系,就类似手表内部的齿轮,每个齿轮都紧密啮合在一起,一旦某个齿轮发生故障,那么整个系统也意味着崩溃。尽可能让对象之间的关系保持松耦合状态是我们期望的。
IoC思想:InversionofControl,翻译为控制反转或反转控制,强调的是原来在程序中创建Bean的权利反转给第三方。
例如:原来在程序中手动的去newUserServiceImpl(),手动的去newUserDaoImpl(),而根据IoC思想的指导,寻求一个第三方去创建UserServiceImpl对象和UserDaoImpl对象。这样程序与具体对象就失去的直接联系。
谁去充当第三方角色呢?
工厂设计模式,BeanFactory来充当第三方的角色,来产生Bean实例
BeanFactory怎么知道产生哪些Bean实例呢?
可以使用配置文件配置Bean的基本信息,BeanFactory根据配置文件来生产Bean实例
例如,用IoC思想去反转UserServiceImpl的创建权,由原来程序中创建反转给通过BeanFactory去创建
二、DI依赖注入思想的提出
上面使用BeanFactory的方式已经实现的控制反转,将Bean的创建权交给了BeanFactory,如果我们想将UserDao的创建权也反转给BeanFactory,与此同时UserService内部还需要用到UserDao实例对象,那应该怎样操作呢?1)在程序中,通过BeanFactory获得UserService2)在程序中,通过BeanFactory获得UserDao3)在程序中,将UserDao设置给UserService
该方式是否存在一些问题?
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:InversionofControl,控制反转,将Bean的创建权由原来程序反转给第三方DI:DependencyInjection,依赖注入,某个Bean的完整创建依赖于其他Bean(或普通参数)的注入
其次,在回答IoC和DI的关系:第一种观点:IoC强调的是Bean创建权的反转,而DI强调的是Bean的依赖关系,认为不是一回事第二种观点:IoC强调的是Bean创建权的反转,而DI强调的是通过注入的方式反转Bean的创建权,认为DI是IoC的其中一种实现方式三、AOP面向切面思想的提出
IoC和DI思想主要是解决前面我们的困惑一,困惑二还没有解决
困惑一:层与层之间紧密耦合再了一起,接口与具体实现紧密耦合在一起。
解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象
困惑二:通用的事务耦合再业务代码中,通用的日纸功能耦合再业务代码中。
解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象,代理对象内部动态结合业务和通用功能
困惑二的解决方案是,借助于IoC思想,将Bean的创建权反转给BeanFactory,而BeanFactory生产的Bean是目标Bean的代理对象,这样就可以在代理对象中对目标对象方法进行相应的增强。
AOP,AspectOrientedProgramming,面向切面编程,是对面向对象编程OOP的升华。OOP是纵向对一个事物的抽象,一个对象包括静态的属性信息,包括动态的方法信息等。而AOP是横向的对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而用这种思维去设计编程的方式叫做面向切面编程
三种思想总结
1)IoC控制反转,是将程序创建Bean的权利反转给第三方;
2)DI依赖注入,某个完整Bean需要依赖于其他Bean(或属性)的注入;
3)AOP面向切面编程,用横向抽取方法(属性、对象等)思想,组装成一个功能性切面。四、Ioc、DI、AOP思想提出框架概念的出现
上面提出了一些思想来解决遇到的问题,而这些思想的实现就需要通过编码去落地,往往我们把具备一定业务领域解决方案的工具称为框架。
框架的基本特点:框架(Framework),是基于基础技术之上,从众多业务中抽取出的通用解决方案;框架是一个半成品,使用框架规定的语法开发可以提高开发效率,可以用简单的代码就能完成复杂的基础业务;框架内部使用大量的设计模式、算法、底层代码操作技术,如反射、内省、xml解析、注解解析等;框架一般都具备扩展性;有了框架,我们可以将精力尽可能的投入在纯业务开发上而不用去费心技术实现以及一些辅助业务。
Java中常用的框架:
不同语言,不同领域都有属于自己的框架,使用框架开发是作为程序员的最基础的底线。Java语言中的框架,
可以分为基础框架和服务框架:基础框架:完成基本业务操作的框架,如MyBatis、Spring、SpringMVC、Struts2、Hibernate等服务框架:特定领域的框架,一般还可以对外提供服务框架,如MQ、ES、Nacos等五、思想、框架和编码的关系
架构师(高级程序员):把思想落地变为实现的人,例如上面的设计和BeanFactory的编写,即框架的设计和实现者。
程序员:使用框架完成业务的人,其中UserServiceImpl、beans。xml、测试类都是我们编写的。六、Spring框架的诞生
spring是一个开源的轻量级Java开发应用框架,可以简化企业级应用开发。Spring解决了开发者在JavaEE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及WebMVC等功能。是当前企业中Java开发几乎不能缺少的框架之一。Spring的生态极其完善,不管是Spring哪个领域的解决方案都是依附于在SpringFramework基础框架的。
向往的生活开播!海南这个绝美但冷门的小城,终于要火了嘛向往的生活第六季开播啦,大家看了嘛,黄老师心心念念的海边终于来啦!节目组没有选择海南大热的三亚万宁等地方,则是选择了比较小众的录制地点海南昌江!一个在海南西线的海边小城,冷门且宝藏
贾乃亮李小璐被疑复合,一家三口一同游玩滑雪,共进晚餐太幸福12月27日,有网友在社交平台上晒出偶遇贾乃亮和前妻李小璐带着孩子一同在滑雪场游玩的画面,两人在滑雪场陪女儿玩得不亦乐乎,而且当天一行人好像还共进了晚餐,对于两人如此行为,也是引发
请慢一点2022年人工智能的7大故事今年,人工智能专家不止一次重复了一句熟悉的话请(脚步)慢下来。2022年的人工智能新闻是快速而无情的一旦你知道了人工智能的现状,一篇新论文或新发现就会让这种理解过时。在2022年,
新科学家2023年这些科技故事或将发生英国新科学家杂志网站列出了2023年将大书特书的科学故事。其中,美国国家航空航天局正在将一艘名为普赛克的太空船送往一颗小行星,据信这颗小行星是一颗年轻行星裸露的铁核。普赛克将于明年
什么是G联盟?一文带你快速了解什么是G联盟?G联盟是NBA的官方小联盟,为NBA培养球员教练官员训练师和工作人员,同时充当联盟的研发实验室。这个联盟拥有30支球队,其中的28支是NBA球队的附属球队。G联盟旨在
扛不住了?苹果启动减产计划,人民网指出卖不动的关键原因近日,受到销量下滑的影响,外媒爆料,苹果启动了减产计划。不仅2022年Q3Q4季度的出货量低于预期,疲软表现可能持续到2023年Q2季度。很显然,苹果也扛不住了!进入2022年后,
南宁找工作太难了今年房地产下行,大量房地产人员被减员失业叠加南宁近二十万大学生毕业,南宁找工作实在太难太难。不仅如此,高度依赖房地产的南宁,各行各业都比往年更加困难,大学生们,尽早决定吧,去广东和
降低99。43网络延迟次数,一加11的这项黑科技到底有多牛?估计很多游戏玩家在看过今天的一加11最新预热消息之后都相当的高兴,根据12月27日一加总裁李杰的透露,一加11将会全球首发游戏云计算专网黑科技,这是行业内首个解决弱网环境下游戏体验
回首红尘人世总无情,天涯咫尺依稀两处行回首红尘人世总无情,天涯咫尺依稀两处行。红尘一梦莫相忘,人情两渺茫,最是断肠不语泪千行。时节最断肠,念母泪成行,阴阳两隔海角永相忘。泪沾裳,人不双,相忘江湖两界各一方。此生相忘不知
中国最牛黑客,16岁入侵腾讯,攻破天涯服务器它被称为中国最牛黑客,脚踩天涯黑进企鹅,在互联网上名噪一时,而后又迅速的消声匿迹。菜霸他的网名你可能很熟悉,叫做菜霸。06年8月的一个早晨,企鹅集团一个负责人收到一个手机短信,短信
拥抱星月,在昭化的这家民宿,枕着星河入睡星星是天空的文字,银河是高不可及的诗篇。流星是上苍和大地的信使,每一道匆忙赶路划破天宇的星光,就是宇宙间的特快专递了。毕淑敏幸福的七种颜色而在这里就有着这样一个地方与心爱的人躺在一