spring系统架构
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)!!!!!!!!
IOC(Inversion of Control)控制反转------解耦合
如图使我们所熟悉的基本逻辑,在业务层中调用Dao层的对象,但是当我们Dao层进行修改的时候业务层也就需要改动,然后项目就得全部重新部署发布,导致代码的耦合度高,所以我们不在业务层创建对象,转换为外部提供
所以引入了IoC控制反转的思想并且Spring实现了该思想
①IoC底层逻辑:把类的对象创建工作给IoC容器,然后只要获取IOC对象即可使用
第一步:导入Spring坐标
第二步:定义Spring管理的类
第三步:配置对应的类使其交给IoC容器管理对象的创建
第四步:获取容器对象,然后就可以使用getBean()方法注入bean对象并使用
②bean是如何创建出来的
第一种方法:调用无参的构造方法创建出来的
第二种方法:使用静态工厂实例化bean
第三种方法:使用实例工厂实例化bean
③bean的作用域
(1)singleton--单例模式,使用 singleton 定义的 Bean 在 Spring 容器中只有一个实例,这也是 Bean 默认的作用域。
(2)prototype--原型模式,每次通过 Spring 容器获取 prototype 定义的 Bean 时,容器都将创建一个新的 Bean 实例。
(3)request:在一次 HTTP 请求中,容器会返回该 Bean 的同一个实例。而对不同的 HTTP 请求,会返回不同的实例,该作用域仅在当前 HTTP Request 内有效。
(4)session:在一次 HTTP Session 中,容器会返回该 Bean 的同一个实例。而对不同的 HTTP 请求,会返回不同的实例,该作用域仅在当前 HTTP Session 内有效。
(5)global Session:在一个全局的 HTTP Session 中,容器会返回该 Bean 的同一个实例。该作用域仅在使用 portlet context 时有效。
④bean的生命周期-------从创建到销毁
⑤依赖注入
setter注入
setter注入引用类型
setter注入简单类型
构造器注入
构造器注入引用类型
构造器注入简单类型
至于依赖的自动装配和集合(List,array,map...)的注入这里就不做讲解
⑥数据源对象管理-----Druid
⑦容器
创建容器:
获取bean:
接口结构:
至此以上都是对Spring配置的原理过程的学习,而在实际开发中都不是使用上面的开发模式,而是接下来的注解开发(很重要!!)
注解开发(要求熟练掌握)
①使用注解定义bean@component(也可以分为@Controller @Service @Repositary)
②配置文件用注解类替代@Configuration
③使用注解依赖注入@Autowired
④第三方的Bean
两种方式的对比
AOP(Aspect Oriented Programming)面向切面编程------无侵入的功能增强
核心概念:代理模式
AOP的工作流程: