Spring
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
Spring既是容器(管理对象生命周期)又是技术框架(规定程序处理流程,提供事物管理、框架集成等功能,开发人员可以专注于业务逻辑开发)
Spring框架特点
- **控制反转:**spring框架给对象建立依赖,无需编写代码实例化后调用
- AOP切面
- **容器:**控制bean生命周期,自动实例化
- 轻量:按需引入spring不同能力的jar包
- 框架集成:易集成mvc,orm等各种框架
- 非侵入:业务代码开发时无需强制嵌入spring代码中
Spring的好处
- 降低代码间的耦合度。
- 集成大部分主流技术框架,利于快速开发。
- 容器提供单例模式支持,开发人员不需要自己实现单例特性的代码。
- 容器提供AOP技术,可以很容易实现运行态能力增强,例如:权限拦截、运行期监控、日志记录等。
- 容器提供的丰富工具类,帮助加快应用的开发。
IOC功能
- 控制反转(Inversion of Control):由程序代码直接操控对象的调用权交给容器,通过容器实现对象的注入与管理
- 依赖注入(Dependency Injection):让容器全权负责依赖关系,受管组件只需暴露Javabean的setter方法或者带参数的构造方法
IOC容器及启动配置加载
Spring提供两类IOC容器的实现类型(配置文件相同)
- beanFactory:IOC容器基本功能的实现
- ApplicationContext:提供比beanFactory更多的功能
bean作用域
作用域是指Spring中的bean实例的生命周期的时间范围
- singleton:单例,即在整个应用程序中有一个bean的实例
- prototype:原型,每次请求获取bean时,容器都会构建bean的实例
- session:每个Web应用的会话会建立一个bean的实例
- request:每个web请求会建立一个bean实例
- global session:针对portlet应用的全局会话作用域
IOC容器功能使用
bean实例化
方法1:通过xml配置bean实例化
方法2:通过注解实例bean
@Service:用于标注业务层组件
@Controller:用于标注控制层组件
@Repository:用于标注数据访问组件
@Component:泛指组件
这种方式需要在spring的xml中加入开启注解实例bean的代码
bean注解注入
- @Autowired:默认按类型找实例注入,默认要求对象必须存在。如果允许null值,可以设置它required属性为false。
- @Resource:默认按名称找实例注入,当找不到与名称匹配的bean再按类型注入
AOP功能
AOP称为面向切面编程,在程序开发中主要解决一些横向层面的技术问题。
Spring切面几个概念
- Aspect(切面):通常是一个类,里面可以定义切入点和通知。
- joinpoint(连接点):指那些被拦截的点,一般是方法调用。在spring中就是指方法。
- pointcut(切入点):指要对哪些joinpoint进行拦截的定义,就是带有通知的连接点,在程序中主要体现为书写切入点的表达式。
- advice(通知):指拦截到joinpoint之后要做的事情就是通知,AOP在特定的切入点执行的增强处理。有before,after等。
- target(目标对象):代理的目标对象。
- weave(织入):指将aspect应用到target对象并导致proxy对象创建的过程称为织入
- introduction(引入):在不修改类代码的前提下,introduction可以在运行期为类动态地添加一些方法。


被折叠的 条评论
为什么被折叠?



