1、2007年,基于 Java 得开源框架正式发布
2、Spring 不仅仅是一个框架,Spring 俨然成为了一种生态
3、与其说是 Java 开发,不如书是 Spring 开发
4、简化开发,让程序员把关注点放到业务中去
1、基于 POJO 得轻量级和最小侵入性编程
2、通过依赖注入和面向接口松耦合
3、基于切面和惯性进行声明式编程
4、通过切面和模板减少样板式代码
| Spring思想 | 应用场景 [特点] | 一句话归纳 |
|---|---|---|
| OOP | Object Oriented Programming [面向对象编程] 用程序归纳总结生活中一切事物 | 封装、继承、多态 |
| BOP | Bean Oriented Programming [面向Bean编程] 面向Bean [普通 Java 类] 设计程序,解放程序员。 | 一切从Bean开始 |
| AOP | Aspect Oriented Programming [面向切面编程] 找出多个类中有一定规律的代码,开发时拆开,运行时再合并。面向切面编程,即面向规则编程。 | 解耦,专人做专事 |
| IOC | InverSion Of Control [控制反转] 将 new 对象的动作交给 Spring 管理,并由 Spring 保存已创建的对象 [IOC容器] | 转交控制权 [即 控制权反转] |
| DI/DL | Dependency Injection [ 依赖注入 ] 或者 Dependency Lookup [以来查找],Spring不仅保存自己创建的对象,而且保存对象与对象之间的关系。注入即赋值,主要三种方式,构造方法、set方法、直接赋值 | 自动赋值 |
AOP、IOC、DI 之间的关系
1、AOP 依赖于 IOC
2、DI 依赖于 IOC

1、掌握 XML 配置和 Annotation 编程的区别
2、掌握常用的 Annotion 配置功能
3、完全掌握 Spring 的 Annotation API 使用
| 注解名称 | 说明 |
|---|---|
| @Configuration | 把一个类作为一个 IOC 容器,它的某个方法头上如果注册了 @Bean,就会作为这个 Spring 容器中的 Bean |
| @ComponentScan | 在配置类上添加 @ComponentScan 注解,该注解默认会扫描该类所在的报下所有的配置类,相当于之前的 < context:component-sacn > |
| @Scope | 用于指定 scope 作用域的 [ 用在类上 ] |
| @Lazy | 表示延迟初始化 |
| @Conditional | Spring 4 开始提供,它的作用时按照一定的条件进行判断,满足条件给容器注册 Bean |
| @Import | 导入外部资源 |
| 生命周期控制 | @PostConstruct 用于指定初始化方法 [ 用在方法上 ] @PreDestory 用于指定销毁方法 [ 用在方法上 ] @DependsOn 定义 Bean 初始化即销毁时的顺序 |
| 注解名称 | 说明 |
|---|---|
| @Component | 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注 |
| @Service | 用于标注业务层组件 |
| @Controller | 用于标注控制成组件 |
| @Repository | 用于标注数据访问层组件,即Dao组件 |
| @Value | 普通数据类型赋值 |
| @Autowired | 默认按类型装配,如果我们想使用按名称装配,可以结合 @Qualifier 注解一起使用 |
| @PropertySource | 读取配置文件赋值 |
| @Qualifier | 如存在多个实例配合使用 |
| @Primary | 自动装配时当出现多个 Bean 候选时,被注解为 @Primary 的 Bean 将作为首选者,否则将抛出异常 |
| @Resource | 默认按名称装配,当找不到与名称匹配的 Bean 才会按类型装配 |
| 注解名称 | 说明 |
|---|---|
| ApplicationContextAware | 可以通过这个上下文环境对象得到Spring容器中的 Bean |
| BeanDefinitionRegistryPostProcessor | BeanDefinitionRegistryPostProcessor实现了BeanFactoryPostProcessor接口,时Spring框架的BeanDifinitionRegistry的后处理器,用来注册额外的BeanDefinition |
| 注解名称 | 说明 |
|---|---|
| @EnableTransactionManagement | 添加对事物管理的支持 |
| @Transactional | 配置声明式事务信息 |
原文:https://www.cnblogs.com/JustDoIt-1221/p/14623784.html