Spring杂谈(全面的总结)

前言:

最近一直在学习spring,写这篇文章的目的出于对近期所学做一个总结,最主要的也是希望让大家重新认识下spring.讲到spring大家都会想到Ioc.,Ioc字面意思是控制反转。不知道大家小时候有没有一个习惯遇到不认识的单词先查新华字典。其实当我们遇到不认识的语句时可以查查维基百科英文版,看看它给出的解释.下面是维基百科对Ioc的解释。

In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow of control as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.

 

说几个比较重的点:

1反转控制是相对于传统软件编程模型而言的。

2传统编程模型需要自己去调用可重复利用的lib,而对于反转控制而言这些都交给了框架。

3在谈起Ioc时,另外常常提起的的一个原则是好莱坞原则——导演在拍一部电影的时候,你们演员不要来找我,而是我们来找你。

可能讲到这里很多人可能有点晕,那么我在换个讲法,比如我们写一个普通的java程序时我们需要使用用户类,那么我们一般会这么写new User();熟悉Spring的同学知道应该这么写@Autowired User user(依赖注入),把初始化User的过程理解成你不来找我们我们来找你。那为什么要这么做呢?因为Spring就是一个容器,那么我们需要对每一个Bean有一个管理功能。事实上jdk自带的JavaBeans也是Ioc实现的一种方式,并且提供以下功能:

1依赖查找

2生命周期管理

3配置元信息

4事件

5自定义

6资源管理

7持久化

比如我们可以通过Java自省Introspector.getBeanInfo(User.class)依赖查找出相应的类对应的BeanInfo信息。其实到这里大家也可看出实现Ioc的方式有很多种,比如上文提到的依赖查找以及依赖注入,除此之外还有模板模式,策略模式等。到此已经对Ioc有了一个简单的讲解,接下来本文将对Spring各个模块做出一一的讲解。主要包括以下几个模块:

1前言

2SpringBean基础

3依赖查找

4依赖注入

5依赖来源

6SpringBean作用域

7SpringBean生命周期

8Spring配置元信息

9Spring资源管理

10Spring校验

11Spring数据绑定

12Spring类型转换

13范型处理

14Spring事件

15Spring注解

16SpringEnvironment

本文篇幅巨大且过于枯燥-大家可当作连续剧观看。

一、SpringBean基础

在jdk中我们可以通过BeanInfo来描述一个POJO对象,在spring中我们使用BeanDefinition接口来描述一个类。而BeanDefinition主要通过以下四个方面来描述一个Bean

1Bean的类名

2Bean的行为配置元素主要包括scope(作用域)autowired(自动绑定)bean生命周期回调等

3对其他Bean的引用如我们常见的xml中的ref元素

4属性(定义一个用户Bean,那么年龄,姓名等就是属性)

下图是BeanDefinition的一个总结:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. spring杂谈[原创] 1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 1.2 我对AOP的理解 1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) 1.7 Spring开闭原则的表现-BeanPostProcessor扩展点-2 1.8 Spring3.1 对Bean Validation规范的新支持(方法级别验证) 1.9 Spring对事务管理的支持的发展历程(基础篇) 1.10 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。 1.11 在spring中获取代理对象代理的目标对象工具类 1.12 如何为spring代理类设置属性值 1.13 我对SpringDAO层支持的总结 1.14 我对SpringDAO层支持的总结 1.15 我对SpringDAO层支持的总结 1.16 我对Spring 容器管理事务支持的总结 1.17 我对Spring 容器管理事务支持的总结 1.18 不重复配置——利用Spring通用化配置 1.19 @Value注入Properties 错误的使用案例 1.20 @Value注入Properties 使用错误的案例 1.21 扩展SpringMVC以支持更精准的数据绑定 1.22 扩展SpringMVC以支持更精准的数据绑定1 1.23 扩展SpringMVC以支持绑定JSON格式的请求参数 1.24 扩展SpringMVC以支持绑定JSON格式的请求参数 1.25 在应用层通过spring特性解决数据库读写分离 1.26 context:component-scan扫描使用上的容易忽略的use-default-filters 1.27 idea内嵌jetty运行springmvc项目报ConversionFailedException 1.28 springmvc 3.2 @MatrixVariable注解 1.29 spring3.2 带matrix变量的URL匹配问题 1.30 Shiro+Struts2+Spring3 加上@RequiresPermissions 后@Autowired失效 1.31 Spring事务不起作用 问题汇总 1.32 Spring3 Web MVC下的数据类型转换(第一篇)——《跟我学Spring3 Web MVC》抢先看 1.33 Spring 注入集合类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值