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

网站建设费汇算清缴百度关键词快速排名

网站建设费汇算清缴,百度关键词快速排名,做牙齿的招聘网站,用wordpress 帮客户建站一聊到java,离不开的一个东西就是spring;当我想了解什么是spring的时候,一查,基本上都是围绕着两个词来展开的:IoC和AOP。 对于我自己来说,AOP我觉得比较好理解,因为不管是之前写golang还是pyt…

一聊到java,离不开的一个东西就是spring;当我想了解什么是spring的时候,一查,基本上都是围绕着两个词来展开的:IoC和AOP。

对于我自己来说,AOP我觉得比较好理解,因为不管是之前写golang还是python,都或多或少的接触过。但是IoC就相对要晦涩一点了,网上找到的材料又大多只是概念性的照本宣科,所以经过一系列的学习后,自己也有了一些理解,在这里记录一下希望能帮到大家。

什么是IoC

控制反转(Inversion of Control)是软件工程领域中的一项设计原则,它将程序中对象之间的依赖关系的控制权从代码本身转移到外部容器或框架中。这一理念在面向对象编程的实践中尤为常见。

在传统编程模式中,对象的创建、配置和管理由开发者在代码中显式完成。开发者需要手动编写代码来创建对象实例,并管理它们的生命周期和依赖关系。例如,在Java中,开发者使用new关键字来创建对象实例,并手动设置对象的属性和依赖关系。

但在IOC模式下,对象的创建、配置和管理由专门的容器或框架负责。开发者只需定义好对象及其依赖关系,容器会自动创建并管理这些对象。例如,在Spring框架中,开发者通过XML配置文件、Java注解或Java配置类来声明Bean(对象),Spring容器会根据这些声明来创建Bean实例,并管理它们的生命周期和依赖关系。

这种架构带来了诸多优势,最明显的我认为就是由于依赖关系由容器管理,组件之间的耦合度大大降低。组件只需声明其依赖关系,而无需关心依赖对象的创建和管理,从而提高了系统的灵活性和可维护性。

实现IoC的机制多种多样,如策略设计模式、服务定位器模式、工厂模式以及依赖注入(DI)等。

所以,我们平时听到比较多的DI,其实就是IoC的一种实现方式。

接下来,我们再了解一下依赖注入这种实现IoC的方法。

什么是依赖注入(DI)

依赖注入是一种我们可以用来实现控制反转(IoC)的模式,其中被反转的控制是设置对象的依赖关系。

将对象与其他对象连接起来,或者将对象“注入”到其他对象中,这一操作是由装配器完成的,而不是由对象本身完成。

以下是在传统编程中创建对象依赖关系的方式:

public class Store {private Item item;public Store() {item = new ItemImpl1();    }
}

在上面的示例中,我们需要在 Store 类本身中实例化 Item 接口的一个实例。

通过使用依赖注入,我们可以重写这个示例,而无需指定我们想要的 Item 的实例化过程。

public class Store {private Item item;public Store(Item item) {this.item = item;}
}

这样做的一个显著的好处,就是我们的Store的业务代码无需关注Item的构造过程,以后如果哪天Item的构造的方式变了,比如构造函数从2个变成了3个,如果是传统的变成模式,那么我们就需要修改自己的代码去做适配;但是如果是DI的话,我们便不需要关心这部分的变化。

什么是IoC Container

核心概念

IOC容器是一种设计模式,其核心思想是控制反转(Inversion of Control)。在传统的应用程序中,对象之间的依赖关系通常是硬编码的,即一个对象直接创建和使用另一个对象。而IOC容器通过将对象的创建和管理交给容器来反转这种控制,从而实现松耦合和更好的可测试性。

实现步骤

容器初始化

在创建和使用IOC容器之前,首先需要初始化容器。这通常涉及创建一个容器实例,并配置容器的一些基本属性。

对象注册

将需要管理的对象注册到容器中。这通常涉及将对象的名称(或标识)与对象实例或对象创建工厂进行关联。在Spring框架中,可以通过XML配置文件、注解或Java配置类来完成对象的注册。

依赖关系解析

当容器接收到一个对象请求时,它需要解析该对象的依赖关系。这通常涉及查找对象所需的依赖项,并确保这些依赖项已被注册到容器中。

对象实例化

一旦依赖关系被解析,容器就可以创建并返回请求的对象实例。这通常涉及调用对象的构造函数或工厂方法,并将解析得到的依赖项注入到对象中。

具体实现方式

基于XML的配置方式

在Spring框架中,可以通过XML配置文件来定义Bean(即对象)和它们的依赖关系。容器在启动时会读取配置文件,并解析出Bean的定义和依赖关系。然后,当容器接收到一个对象请求时,它会根据配置文件中的信息来创建和返回对象实例。

示例:

<beans><bean id="serviceA" class="com.example.ServiceA"/><bean id="serviceB" class="com.example.ServiceB"><property name="serviceA" ref="serviceA"/></bean>
</beans>

在上述配置中,serviceA和serviceB是两个Bean,serviceB依赖于serviceA。容器在创建serviceB实例时,会自动将serviceA实例注入到serviceB中。

基于注解的配置方式

除了XML配置文件外,Spring框架还支持通过注解来定义Bean和它们的依赖关系。这通常涉及在类上使用特定的注解来标记它们作为Bean,并在字段或方法上使用注解来定义依赖关系。

示例:

@Component
public class ServiceA {// 类定义
}@Component
public class ServiceB {@Autowiredprivate ServiceA serviceA;// 类定义
}

在上述示例中,@Component注解用于标记ServiceA和ServiceB作为Bean。@Autowired注解用于自动注入ServiceA实例到ServiceB中。

基于Java配置类的配置方式

Spring框架还支持通过Java配置类来定义Bean和它们的依赖关系。这通常涉及创建一个配置类,并使用@Configuration注解和@Bean注解来定义Bean。

示例:

@Configuration
public class AppConfig {@Beanpublic ServiceA serviceA() {return new ServiceA();}@Beanpublic ServiceB serviceB() {ServiceB serviceB = new ServiceB();serviceB.setServiceA(serviceA());return serviceB;}
}

在上述示例中,AppConfig是一个配置类,使用@Configuration注解进行标记。@Bean注解用于定义Bean,serviceB依赖于serviceA,通过调用serviceA()方法来获取serviceA实例并注入到serviceB中。

容器的高级特性

除了基本的对象注册和依赖注入功能外,IOC容器还支持一些高级特性,如生命周期管理、AOP(面向切面编程)支持、事件发布等。这些特性使得IOC容器更加灵活和强大,能够满足更复杂的应用程序需求。

http://www.hkea.cn/news/811529/

相关文章:

  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司
  • 漂亮大气的装潢室内设计网站模板 单页式html5网页模板包前端优化
  • 论坛网站开发开题报告青岛百度推广多少钱
  • 文山做网站如何优化百度seo排名
  • 上海展陈设计公司有哪些成都网站seo性价比高
  • 小韩网站源码360广告投放平台
  • 网站地图的重要性短信广告投放软件
  • 搭建直播网站需要怎么做教育培训机构平台
  • 濮阳网站网站建设网络营销策划是什么
  • 做新闻网站需要什么手续河北软文搜索引擎推广公司
  • 广州网站建设联系电话seo推广的公司
  • 一起做网店一样的网站关键词歌曲免费听
  • 负责网站建设推广本周热点新闻事件
  • 快速做网站优化谷歌在线浏览入口
  • 苏州企业网站建设开发与制作2023年6月份又封城了
  • 用java做网站可以吗吉林seo刷关键词排名优化
  • 网站建设面试google广告投放技巧
  • 整形网站整站源码如何让关键词排名靠前
  • php网站后台搭建外贸网站大全
  • 建 新闻 网站营销战略有哪些内容
  • 营销融合app网站seo招聘
  • 快速做网站的方法网站换了域名怎么查
  • 建筑工程网络计划图怎么编制百度seo搜索排名
  • 免费建网站系统百度云登陆首页
  • wordpress 采集微博网站建设优化
  • 做淘宝客新增网站推广百度用户服务中心人工电话