Spring的主要核心
控制反转(IOC):当需要一个对象时,在传统的java开发模式中,我们要自己去new一个对象,而在Spring开发模式中,这个动作交由Spring容器去做。
依赖注入(DI):依赖注入是指在 Spring IOC 容器创建对象的过程中,将依赖对象的属性通过配置进行注入。
面向切面编程(AOP):在面向对象编程(OOP)的思想中,我们将事务纵向抽象成一个个对象,在面向切面编程中,我们把对象某些相似的地方横向抽象成一个切面,可以在这个切面上做权限验证,日志记录等操作。
Spring Bean生命周期
1.Spring 容器 从 XML 文件中读取 Bean 的定义,并实例化 Bean。
2.Spring 根据 Bean 的定义填充所有的属性。
3.如果 Bean 实现了 BeanNameAware 接口,Spring 传递 bean 的 ID 到 setBeanName 方法。
4.如果 Bean 实现了 BeanFactoryAware 接口, Spring 传递 beanfactory 给 setBeanFactory 方法。
5.如果有任何与 bean 相关联的 BeanPostProcessors,Spring 会在postProcesserBeforeInitialization()方法内调用它们。
6.如果 bean 实现 IntializingBean 了,调用它的 afterPropertySet 方法,如果 bean 声明了初始化方法,调用此初始化方法。
7.如果有 BeanPostProcessors 和 bean 关联,这些 bean 的 postProcessAfterInitialization() 方法将被调用。
8.如果 bean 实现了 DisposableBean,它将调用 destroy()方法。
Spring Bean的作用域
singleton:单例模式(默认),在创建容器时就同时自动创建了一个Bean对象。作用域范围是ApplicationContext中。
prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
session:对于每次HTTP Session,使用session定义的Bean产生一个新实例。只有在Web应用中使用Spring时,该作用域才有效
配置方式
在Xml文件中配置
使用@Scope注解配置
Spring中常用注解
@Component注解:泛指,当我们不确定该类是Cotrolle层或是Service层或是其他时,我们可以用这个注解
@Respository注解: 标识持久层,数据访问组件,即 DAO 组件
@Service注解:标识业务层组件
@Controller注解:标识表现层,控制层组件
@RequestMapping 是用来处理请求地址映射的注解,可用于类或方法上。
@Autowired注解与@Resource注解:两者都可以做bean的注入,不同的是,Resource有两个属性,name和type,它默认是以byName的方式注入,而Autowired则是byType方式注入。