一.spring框架结构
二.srping两大特性
(1)IOC(控制反转):原先手动创建对象(new对象)的控制权交由spring框架来管理,只需从spring容器中获取需要的对象,不关心对象的创建过程。
DI(依赖注入):在spring创建对象的过程中,将对象依赖属性通过配置设置给该对象。
(2)AOP(面向切面编程):将功能分为核心业务功能(如登录、数据操作)和周边功能(如日志、事务管理),周边功能一般被定义为切面。减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
三.springIoc容器
IOC 容器具有依赖注入功能的容器,它可以创建对象,IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
(1)BeanFactory容器:最简单的容器,给 DI 提供了基本的支持,它用org.springframework.beans.factory.BeanFactory 接口来定义。
(2)ApplicationContext容器:添加了更多的企业特定的功能,包括 BeanFactory 容器的所有功能,由 org.springframework.context.ApplicationContext 接口定义。
四.SpringBean
bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。
当一个 bean 的作用域为 Prototype,表示一个 bean 定义对应多个对象实例。Prototype 作用域的 bean 会导致在每次对该 bean 请求(将其注入到另一个 bean 中,或者以程序的方式调用容器的 getBean() 方法)时都会创建一个新的 bean 实例。Prototype 是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象。根据经验,对有状态的 bean 应该使用 prototype 作用域,而对无状态的bean则应该使用 singleton 作用域。
Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁
五.spring基于注解的配置
(1)@Required 注解应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。
(2)@Autowired 自动装配,将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。
(3)@Qualifier 当创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除争议。
(4)@Configuration 和 @Bean 注解
带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。