spring基础知识
一控制反转IOC和依赖注入
首先这个控制反转就是依赖注入,他们说的是同样的意思,那么依赖是什么意思呢?就是我们使用某个类的意思,那么依赖注入就是我们在使用它时并不需要new,而是通过容器自动将依赖的对象注入到组件中。更具体的来说在使用依赖对象的类当中并不直接new某个类,而是提供一条该到这个依赖对象的通道(就是这个依赖对象的设置方法)。然后我们通过在BeanFactory类中“生产”使用依赖对象的类的实例和依赖对象,并完成这个依赖对象的调用。
比如:
<!--意思是new 一个UserServiceImpl对象,而service代表这个对象的引用-->
<bean id = "service" class = "test.spring.service.impl.UserServiceImpl">
<property name = "dao" ref = "dao"/>
<!--这句话就完成了依赖注入,它的意思是将UserDaoImpl实例dao注入给UserServiceImple,这个UserServiceImpl的一个实例对象的属性dao通过调动UserServiceImpl中的通道方法setDao来把这个dao注入进来或者我们叫它装配-->
</bean>
二什么是面向切面编程AOP
就是我们把共有的功能,我们提取出来,存放到一个“切面”中(也就是普通的java类),然后我们利用动态代理技术实现“切面”的“织入”。这样所有的业务逻辑处理模块就可以共用这些切面。
三AOP如何实现
使用了java的反射机制和动态代理机制。
AOP中的常用术语
1.切面:切面就是一个普通的java类,如日志切面,权限切面等,那么我们怎么把一个普通java类识别为切面呢,这需要在配置中指定。
2.通知:就是切面的具体实现,我们可以理解通知为切面这个类中的方法,我们以目标方法为参照点,根据放置的地方不同,分为前置通知(在目标方法之前)、后置通知(在没有异常的情况下运行)、异常通知(在这个目标方法中抛出了异常则执行这个通知)、最终通知(不管目标方法有没有抛出异常)、环绕通知(目标方法的前后都执行的通知),我们怎么知道某个方法是通知呢,我们在配置中指定。
<!-- 将LogAspectJ切面中的myBeforeAdvice方法定义成前置通知 -->
<aop:before pointcut-ref="logpointcut" method="myBeforeAdvice"/>
<!-- 将LogAspectJ切面中的myAfterReturningAdvice方法定义成后置通知 -->
<aop:after-returning pointcut-ref="logpointcut" method="myAfterReturningAdvice"/>
<!-- 将LogAspectJ切面中的myAfterThrowingAdvice方法定义成异常通知 -->
<aop:after-throwing pointcut-ref="logpointcut" method="myAfterThrowingAdvice" throwing="e"/>
<!-- 将LogAspectJ切面中的myAfterAdvice方法定义成最终通知 -->
<aop:after pointcut-ref="logpointcut" method="myAfterAdvice"/>
<!-- 将LogAspectJ切面中的myAroundAdvice方法定义成环绕通知 -->
<aop:around pointcut-ref="logpointcut" method="myAroundAdvice"/>
3.连接点:就是插入切面的地方,比如方法调用,异常抛出或字段修改,但Spring只支持方法级的连接点。不同于切入点,它是指即将切入切面的对象(目标对象)中插入切面的地方。也就是说,我们可以理解其为目标对象的一个方法。遇到这个方法时,被拦截下来,执行相应的“通知”,也就是方法!
4.切入点:定义通知应该切入在哪些连接点上,通过正则表达式来定义。我的理解是这样的,切入点和连接点都是同一个东西的不同角度不同范围罢了,他们是从不同的角度和不同的范围出发,切入点,是从切面的通知出发,定义我们想要切入的地方。而连接点是从目标对象出发,定义所以的可以切入的地方。所以连接点大于等于切入点。
如:
<!-- 定义切入点,切入点正则表达式execution(* test.spring.action.UserAction.*(..))
的意思是拦截test.spring.action.UserAction类中的所有方法,不论方法参数有无,
也不管返回结果为何类型。
-->
<aop:pointcut id="logpointcut" expression="execution(* test.spring.action.UserAction.*(..))"/>
就是定义切入点为test.spring.action.UserAction中的所有方法。也就是对于所有的方法,都要停顿下来,去完成相应的通知。
5.目标对象,目标对象即将切入切面的对象,被通知的对象,这些对象中只剩下了干干净净的代码,等待AOP容器的切入。但AOP容器并不直接调用目标对象,而是调用代理对象。
6.代理对象:是将通知应用到目标对象之后被动态创建的对象,可以理解为代理对象的功能等于目标对象的核心业务逻辑功能加上共有功能。但它对程序员透明,是程序运行中的产物。
7.织入:将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程可以发生在编译期,类装载期,运行期。但分别要求一个支持这种AOP实现的特殊编译器,一个支持AOP实现的特殊类装载器,发生在运行期时,则可直接通过java语言的发射机制与动态代理机制来动态实现。
四面向接口编程
引用百度知道的说法:所谓的面向接口编程可以降低程序之间的耦合度,是指在具体的调用处都是接口进行的,并不依赖于具体类
参见
http://zhidao.baidu.com/question/271744863.html
分享到:
相关推荐
Spring基础知识汇总 Java开发必看
以下是对Spring基础知识的详细讲解: 1. **依赖注入(Dependency Injection, DI)** 依赖注入是Spring的核心特性,它允许组件之间松耦合。通过容器管理对象的创建和对象之间的依赖关系,而不是在代码中硬编码依赖。...
标题中的“Spring基础知识”指的是Spring框架的基本概念和核心特性,这是一个广泛使用的Java应用程序开发框架,尤其在企业级应用中非常流行。Spring框架以其依赖注入(Dependency Injection,DI)和面向切面编程...
下面将对Spring的基础知识进行详细的解释。 1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性,它允许开发者通过外部配置来管理对象及其依赖关系,而不是在代码中硬编码这些依赖。这样可以提高代码...
资源包含如下: 1,JAVA_IO详解_包括讲解IO中各种流及其用法.pdf 2,Java集合排序及java集合类详解.pdf 3,JDBC入门电子书.pdf 4,Spring源代码解析.pdf 5,第三章 Servlet 最佳实践.pdf
【Spring基础知识】 Spring是一个广泛使用的Java企业级应用程序框架,主要设计目的是降低模块间的耦合度,提供一种轻量级的开发方式。Spring的核心特性包括依赖注入(IoC)和面向切面编程(AOP)。它不仅关注业务层...
《Spring基础进阶技巧200篇》是一本关于Spring框架的资源,它提供了200篇文章,涵盖了Spring框架的基础知识和...这本资源适合已经具备一定Spring基础知识的开发人员,希望进一步深入学习和应用Spring框架的技术人员。
Spring基础知识点详细说明: 1. Spring框架介绍: Spring是一个开源的Java/Java EE全功能栈轻量级框架,为现代Java企业应用提供了全方位的编程和配置模型。Spring包括了管理业务对象的一致的方法,并且激励了一种...
### Spring基础知识点详解 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,它提供了全面的基础架构支持,让开发者能够轻松地构建企业级应用。Spring的核心特性包括依赖注入(Dependency Injection, DI...
这个文件名可能是某种简化版的Spring教程,可能包含易于理解的Spring基础知识和常见概念,例如: - **XML配置**:介绍如何通过XML文件配置Spring Bean。 - **注解驱动开发**:使用注解进行依赖注入和配置。 - **...
【Spring框架基础】 Spring框架是Java开发领域中不可或缺的一部分,它的出现是为了应对企业级应用开发的复杂性。Spring框架的核心特性是控制反转(IoC)和面向切面编程(AOP),这两个特性大大简化了Java应用的构建...
### 1-1.Spring基础知识点解析 #### 一、Spring框架概述 - **Spring框架**是一种轻量级的开源JavaEE框架,旨在简化企业级应用的开发。 - **轻量级**体现在其较小的体积(较少的jar包)以及能够独立运行的能力。 - ...
本教程旨在为初学者提供详尽的Spring基础知识,帮助你快速掌握这个强大的企业级应用开发框架。 首先,我们要理解Spring的核心概念——依赖注入(Dependency Injection,DI)。在传统的编程中,对象会自行创建它所...
1. **Spring基础知识** - **依赖注入(DI)**:介绍Spring框架中最基础也是最核心的概念——依赖注入。这一概念使得组件之间的依赖关系可以通过配置文件来管理,而不是硬编码在程序中。 - **面向切面编程(AOP)*...
- **Spring基础知识**:介绍Spring框架的基本概念和核心组件。 - **依赖注入详解**:深入讲解依赖注入的原理及其在Spring中的应用。 - **面向切面编程实践**:教授如何使用Spring AOP进行日志记录、性能监控等。 - *...