当前位置: 首页 > news >正文

wordpress瀑布流分页seo公司哪家好用

wordpress瀑布流分页,seo公司哪家好用,济南市建设工程交易网,网站开发网页设计IOC Inversion of Control 控制反转,是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。 通俗点讲,因为项目…

IOC

Inversion of Control

控制反转,是一种面向对象的思想。

控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。

通俗点讲,因为项目中每次创建对象是很麻烦的,所以我们使用 Spring IoC 容器来管理这些对象,需要的时候你就直接用,不用管它是怎么来的、什么时候要销毁,只管用就好了。

IOC思想

首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。

  那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

IOC代码层面去理解

先看下面几种管理对象的方式

原始方式:

如果不用IOC,我们自己管理对象,通常我们创建A类,创建B类,然后在A类调用B类的某个方法。

缺点:A和B耦合度太高了,你改了B,你也得改A,不好维护。

 

工厂模式:

建立一个工厂类,A类调用工厂类,工厂类调用B类,这样你修改了B,不需要修改A,降低了耦合度。

 

IOC:

实现方式:IOC通过依赖注入来实现,依赖注入的关键是IOC容器SpringContainer,IOC容器的本质也是一个工厂。

 

在执行SpringBoot的run方法之后,会自动创建Spring容器,会自动扫描某些包下的某些bean。 

Spring容器、bean?

Spring容器也叫做IOC容器,本质上就是一个工厂,它不但能管理Bean,还能管理Bean的生命周期、作用域

Bean是Spring容器管理的对象,可以是任何一个java类的实例,例如数据库连接、业务逻辑类、控制器等。

哪些类会被注册到Spring容器?

@ComponentScan,该注解告诉Spring扫描那些包路径下的类,然后判断如果类使用了@Component,@Controller, @Service...等注解,就注入到Spring容器中

Spring容器如何配置第三方的Bean?

Spring容器管理自己写的Bean,你可以加注解来注册到容器里,但是第三方的Bean你如何装配?第三方的类,人家代码是在jar包里面的,你不能轻易改别人的代码,所以不能通过加注解的方式注入。

解决方法:通过配置文件来解决。

配置类,你加一个@Configuration注解,这样这个类就是配置类了。

DI依赖注入? 

DI思想

  IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

  理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作只是在spring的框架中堆积木而已。

@Autowired实现

一旦你通过@Autowired注解将某个类或成员变量注入到你的类中,你就可以在你的代码中使用这个实例,调用它的方法或访问它的属性。

@Autowired会告诉Spring容器尝试为被注解的类或成员变量自动注入合适的Bean,以满足它们的依赖关系。

当你使用@Autowired时,Spring容器会在应用程序启动时扫描你的类,并尝试查找匹配的Bean,然后自动将它们注入到被注解的类或成员变量中。这样,你就不需要手动实例化和管理这些Bean,Spring容器会为你完成这些任务,从而使你的应用程序更加易于维护和扩展。

大白话来说就是:

你用@Autowired这个注解,就能直接从Spring容器中获取对应类的实例,就可以不用new的方式来创建Spring容器管理的Bean实例。

例如:

假设你有一个服务类MyService,你可以在另一个类中使用@Autowired注解将它注入进来,然后调用MyService的方法:

@Service
public class MyService {public void doSomething() {// 执行某些操作}
}@Controller
public class MyController {@Autowiredprivate MyService myService;public void handleRequest() {// 调用MyService的方法myService.doSomething();}
}

在这个示例中,MyService被注入为MyController的私有成员变量myService。Spring容器会自动将MyService的实例注入到myService成员变量中,然后你可以在handleRequest方法中使用myService来调用MyService的方法。

依赖注入获取Bean的好处:

解耦和可维护性:

直接使用new创建Bean会导致你的代码与具体的Bean实现紧密耦合,降低了代码的可维护性和灵活性。如果将Bean的创建过程放在代码中,当需要更改Bean实现时,你需要修改所有使用new创建Bean的地方,而使用依赖注入可以让你在不修改代码的情况下轻松切换实现。

单一职责原则:

使用new来创建Bean实例将责任混杂在一个类中,可能违反了单一职责原则。Spring的IoC容器负责管理Bean的创建和生命周期,这使得你的类可以专注于其核心职责,而不必关心如何创建依赖的Bean。

依赖注入的好处:

通过依赖注入,你可以在类的外部配置Bean的依赖关系,而不是硬编码在类内部。这样,你可以在不修改代码的情况下配置不同的Bean实现,以满足不同的需求或环境。

测试和模拟:

当你直接使用new创建Bean实例时,很难进行单元测试,因为你无法轻松地替换Bean的实现。使用依赖注入可以方便地使用模拟对象或替代实现进行单元测试。

Spring容器的管理:

Spring容器负责管理Bean的生命周期、作用域和依赖关系。使用容器管理Bean可以确保它们按照预期方式创建和销毁,以及在需要时进行依赖注入

http://www.ritt.cn/news/760.html

相关文章:

  • java怎么做直播网站站长之家ppt模板
  • 新网站做优化要准备什么电脑清理软件十大排名
  • 建设银行税务网站自媒体推广渠道有哪些
  • 济南网站建设培训班关键词排名点击软件怎样
  • 做电子政务网站怎么建网站
  • 十大网站搜索引擎seo关键词优化方法
  • 申请做网站、论坛版主sem是什么工作
  • 电子东莞网站建设百度下载安装免费版
  • 教育 网站模板小说推广平台有哪些
  • 海口编程培训有哪些机构搜索引擎优化排名seo
  • 网站单页设计论坛推广方案
  • 网站建设中图片是什么软文写作要求
  • 企业网站建设视频教程哪里可以买链接网站
  • 江苏建设人才无纸化考核网站百度热搜榜今日头条排名
  • 海南省旅游专业网站发展电子商务缺乏强大的专业产业资源做后盾互联网十大企业
  • 网站的流量检测怎么做中央新闻联播
  • 做搜狗网站seo诊断
  • 网站设计培训成都哪家好金华seo扣费
  • 开发app成本seo赚钱吗
  • 网站建设丨选择金手指排名15品牌推广策略与方式
  • 可以做笔记的网站站长之家统计
  • 网站设计的国际专业流程包括刷排名的软件是什么
  • 开发动态网站有哪些技术百度手机网页
  • 北京如何做网站关键词排名批量查询
  • 网站搭建免费视频教程北京网站推广机构
  • 上海注册公司注册资本整站seo排名要多少钱
  • 统计后台网站有哪些优化关键词排名外包
  • 俄语免费网站制作网络科技有限公司
  • 做任务刷王者皮肤网站营业推广方案
  • 织梦模板首页logo修改海淀区seo多少钱