1.Spring、IOC与依赖注入

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40406929/article/details/83584451
  1.  Spring概述

Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。

通过Spring提供的IoC容器(本质就是一个map,key是字符串,值是对象),可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

AOP编程的支持

通过Spring的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

  1. IOC的概念

划分模块的一个准则就是高内聚低耦合。

程序间的依赖关系。

独立性很差,可重用度不高。

2.1工厂式解耦

以上这种方式创建对象会产生耦合,在开发过程中,减少使用这种开发模式。

第一步:先把创建的xml反射替代出来new对象,用反射去创建,然后把发射对象剥离到一个配置文件中。

第二步:然后去用BeanFactory去控制这个文件配置。

到了第二步,这种方式就是工厂式解耦。

由原来的主动索要资源,到现在的被动的给资源。工厂生产什么,它就接收什么,在这个过程中有可能会产生不能匹配的文件。

当然在创建的工厂IOC容器中有两个读取配置的两个对象:一个是Properties另一个是ResourceBundle

ResourceBundle.getBudle(); a.这个对象只能取值不能赋值;

b.只能读取properties配置文件(是因为没有添加扩展名的机会),所以别的不行。

C. 它只能读取类路径下的properties文件,别的地方不行。

但是它还有一个细节就是如下全限定类名和绝对路径的区别

工厂式解耦原理:

2.2控制反转-Inversion of Control

它的主要目的就是解耦。

在service中不可能有可变的方法??

想创建一个对象,只有把工厂对象放外边,放里边会产生多个对象。以下就是springioc的原理:

  1. 使用spring的ioc

注意:准备springjar包(5以上就行)

导入约束xmlns

左图就是用到spring IOC的话,需要配置的三个文件。

  1. spring的分析

以下是获取的容器中对象的方法:

 

BeanFactory和ApplicationContext的区别:

Spring bean对象的细节--以下是关于bean.xml中的分析:

  1. 创建bean对象的三种方式:

 

  1.  Bean对象作用范围改变

  1. Bean对象得生命周期

  1. 配置对象:把对象的创建交给spring来管理:依赖注入

什么是依赖注入?就是把当前所需要的对象传进来就是依赖注入。

如下代码所示:

复杂类型注入

 

补充:

@Service是一个注解啊,告诉spring创建一个实现类的实例啊。。。
就是不用再spring里配置bean,就是因为这个@Service

@Repository用于标注数据访问组件,即DAO组件;

在一个稍大的项目中,如果组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 

 

猜你喜欢

转载自blog.csdn.net/qq_40406929/article/details/83584451