导语
现在很多企业级的项目都是基于 spring 框架开发的,而这两年很火的微服务概念就有基于 springboot springcloud 等框架,spring 框架解决企业应用的复杂性和耦合性,对于一个Java 程序员来说,要想学习 sprinboot 和 springcloud,掌握 spring 的基础用法是一件必须做的事情。
Spring简介
Spring 是一个以 IoC (英文 Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming)为内核的框架,那么啥是 IoC?AOP 又是个什么鬼?
什么是 IoC?
IOC即控制反转,通常我们在项目当中需要手动new去创建对象,这种方式不利对对象的管理,现在我们将对象的创建权利反转给spring容器,这就是控制反转。
什么是 DI?
DI(Dependency Inject)即依赖注入,spring容器在实例化对象的时候,会根据对象之间的依赖关系,自动完成属性注入工作,这就是依赖注入。
什么是 AOP?
AOP即面向切面编程,底层是通 过动态代理的机制来实现的,支持jdk和cglib两种。
默认通过jdk动态代理。通常我们在项目当中,一些公共功能的实现可以通过aop来进行解耦和统一实现,比如事务管理、日志、权限等等。
Spring的核心容器
spring 框架提供了两个最基本最重要的包org.springframework.beans.factory和org.springframework.context。前者的主要接口是 BeanFactory,后者的主要接口是ApplicationFactory。
IoC 框架的主要组件有 Beans、配置文件 applicationcontext.xml、Beanfactory 接口和相关类、ApplicationContext 接口和相关类。
Beans 是项目中为业务提供功能的 Bean,就是容器要管理的 Bean,也就是我们场景的 JavaBean、Java 类。
BeanFactory 使用工厂模式,负责读取 Bean 的配置文件,管理对象的生命周期和依赖关系,包括创建、加载和维护等。
org.springframework.beans.Factory.BeanFactory 是 BeanFactory 的顶级实现类。它会根据配置文件中的定义装载 Bean。Beanfactory 的常用方法有:
getBea(String name) ,可根据 Bean 的 id 生成 Bean 对象。
getBean(String name,Class type) ,可根据 Bean 的 id 和响应类生成 Bean 的对象。
ApplicationContext 接口提供了高级功能的容器,基本与BeanFactory 一致,不同之处是:
提供访问资源更方便。
支持国际化消息。
提供文件消息解析的方法。
可以发布事件。
ApplicationContext 接口实现类有:
FileSystemXmlApplicationContext,从文件使用绝对路径引入 xml 文件加载上下文。
ClassPathXmlApplicationContext,从类路径的 XML 中加载上下文。
XmlWebApplicationContext,从 Web 系统中的 XML 加载上下文。
网友评论