Spring的官方网站:http://www.springsource.org/
Spring的核心功能是IoC和AOP。IoC更为核心。
IoC:Inversion of Control (控制反转)
AOP:Aspect Oriented Programming (面向方面编程)
IoC又称DI(Dependency Injection):依赖注入
Spring的IoC完成的功能:
配置文件中bean的初始化,这样就不需要我们手动的书写单粒模式、工厂模式等等。只需要根据我们的需要把一个类配置成单粒的还是多粒的。
可以把IoC看成是一个抽象工厂,可以创建出许多对象。不需要我们自己编写Singleton、Factory,都由IoC容器来创建对象、管理对象。
IoC其实很简单
以前我们写程序时,如果A类里需要调用B类方法——那A类就自己new一个B类的实例,然后再调用B类的方法。
这样做的不好就体现在:A类的代码和B类的代码以“硬编码“方式耦合了。
实现方式:
通常是采用XML配置文件、或Annotation注释管理的方式配置A和B之间的依赖关系——IoC容器就会根据配置管理,运用反射创建B类的实例,把B实例注入给A。这样A类就和B类的耦合分离开了。
Ioc是一种思想,具体的实现包括两种:依赖查找、依赖注入
依赖查找:需要调用相应的API,这样就会有依赖性,所以很少用。
IoC采用DI(Dependency Injection)技术:依赖注入
通过set()、get()、构造方法,对象new好之后,容器帮助把对象注入进来。
--------------------------------------------------------------------------------------------
AOP的全称是Aspect Oriented Programming,中文翻译成面向方面编程、面向切面编程。
AOP的缺省实现:jdk的动态代理机制。
JDK的动态代理机制。
静态代理:确实存在的。
动态代理:在运行期生成的。
JDK的动态代理机制术语:
目标对象(targetObjet):应用的业务逻辑处理对象。就是真实的实现类。
代理对象(Proxy Object):根据代理机制生成的对象,代理对象要以目标对象为基础。
横切性关注点(advice):
有一些方法,它可以独立出来。但是我们的业务逻辑执行的时候要执行这些额外的方法。
我们把这些独立出来的方法叫做横切性关注点。
这些横切性关注点可能散列在程序里,我们把它拿出来并且模块化。以后我们单独修改这些模块就可以了。
可见AOP就是面向对象的一个补充。模块化的这个类就叫切面类(Aspect)。
AOP管理的就是横切性关注点。
JDK的动态代理:
运行期生成
动态代理首先要实现一个接口:java.lang.reflect.InvocationHandler
代理对象和目标对象的接口是一致的。
切面类(Aspect)里包括:
横切性关注点(advice)的所有实现。
对横切性关注点模块化的这个类就叫做切面类。
advice分类:
before advice:加到方法之前
after advice:加到方法之后
切入点(pointcard)
有一些表达式,表示要把advice加入到目标对象的哪些方法里。
把切面应用到目标对象的方法上这个过程叫做支入(Weave)。
连接点(Joinpoint)
把切面应用到目标对象的方法上,这个方法叫做连接点。目前spring连接点只支持基于方法。
AOP的关键是发现横切性关注点,最后把这些关注点模块化成切面类。
实现AOP有多种方法:
1、采用jdk动态代理
2、使用CGLIB(字节码生成)
如果目标对象实现了接口,spring默认情况下会采用jdk的动态代理来实现AOP。
如果目标对象实现了接口,spring也可以强制使用CGLIB来实现AOP。(需要CGLIB库)
如果目标对象没有实现接口,必须使用CGLIB来实现AOP。
分享到:
相关推荐
Spring 框架是Java开发领域中的一个核心框架,它主要设计目的是为了简化企业级应用的复杂性。Spring 自从2003年发布以来,因其强大的功能和灵活性,已经成为了许多开发者的首选。本节将详细介绍Spring的基本概念、...
**Spring框架概述** Spring是一个广泛使用的Java开源框架,主要用于简化企业级应用的开发。它的核心设计理念是“简事简为,难事善为,重用轮子”,旨在提高开发效率,减少代码冗余,并促进代码的可维护性和可测试性...
01-spring简介-框架的概念Spring框架是 Java 平台的一个开源的全栈(Full-stack)应用程序框架和控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring 还为基于...
深入Spring简介与入门 Spring框架,作为Java世界中最具影响力的轻量级框架之一,自诞生以来便以其简洁、灵活的设计理念赢得了广大开发者的青睐。本文旨在深入探讨Spring框架的核心概念、架构设计及其在实际开发中的...
Spring 简介 java Spring
Spring简介+IOC(理论 Spring简介+IOC(理论 Spring简介+IOC(理论 Spring简介+IOC(理论 Spring简介+IOC(理论 Spring简介+IOC(理论
JAVA Spring 10、Spring简介.pdf
01Spring简介.md
1.spring简介.md
#### 一、Spring框架简介 Spring框架是一个开源的轻量级Java应用框架,主要用于简化企业级应用开发。它通过提供一系列的开发工具和服务,帮助开发者构建灵活、可扩展的应用系统。 #### 二、Spring的核心功能 ...
**Spring框架概述** Spring是一个开源的Java平台,它主要为构建企业级应用提供全面的解决方案。这个框架由Rod Johnson在2003年发起,旨在简化Java开发,尤其是在企业级应用开发中的复杂性。Spring的核心设计理念是...
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。
Spring框架简介和基本原理 Spring是一个业界广泛采用的Java应用程序框架,旨在简化Java企业级应用程序的开发。 Spring框架的核心是容器(IoC容器),它提供了依赖注入(Dependency Injection)的机制,能够将应用...
Spring框架是Java开发中的一个重要组成部分,它由Rod Johnson创建,主要目标是解决企业级应用开发中的复杂性,尤其是对EJB(Enterprise JavaBeans)的过度依赖。Spring最初的理念源自于Rod Johnson的著作《Expert ...
### Java Spring 框架简介及相关面试题解析 #### Spring框架概述 Spring 是一款非常流行的开源Java企业级应用开发框架,被广泛应用于构建高性能、易测试及可复用的Java应用。该框架由Rod Johnson创建,并于2003年6...
在Spring之前我们写代码容易遇到高耦合问题,如下图所示,业务层的实现需要new一个数据层的对像,但是如果我们的数据层发生改变时,业务层的对象必须重新新建,重新进行编译、打包、部署,改动相对较多,代码耦合度...
第2章 Spring简介 2.1 Spring Framework 2.1.1 Spring的模块介绍 2.1.2 Spring的发布版本 2.1.3 Spring的项目 2.2 安装Spring Framework 2.2.1 问题描述 2.2.2 解决...