当前位置:首页>开发>正文

spring核心的知识 spring的的特性和用法

2023-05-28 12:11:17 互联网 未知 开发

 spring核心的知识 spring的的特性和用法

spring核心的知识

Spring是构造java应用的轻量级框架,这里的轻量级不是指类的多少,或者发行包的大小,而是指最小侵入,也就是说,你可以只需改最少的代码就可以获得它带来的好处,不像EJB中创建EntityBean那样具有很强的侵略性。

IOC(Inversion of Control)控制反转:它是Spring的核心,是一种将组件依赖关系的创建和管理置于程序外部的技术。根据我个人的使用是这么理解的:如果用IOC,一个类A中如果要用到其他类B的功能,必须在本类中写入B,同时声明对象B b= new B(),调用方法;而如果使用IOC后,这里的new B()就不必在这里写了,而是在运行时根据spring的xml中的配置动态地把B的实例对象传递给A。这是我个人的理解。IOC也叫DI(Dependency Injection)依赖注入,根据上面的解释应该很好理解字面的意思。IOC一般跟接口配合使用,两者都会得到好处,不难理解,使用接口的话没有IOC,把采用接口的程序连接起来,复杂度很高,代码量也不会少,而有了IOC,代码量会少很多。

面向切面编程(AOP):它是OOP的补充,而不是OOP的对手。不用OOP只用AOP写程序几乎不可能。 OOP可以有效解决很多问题,但在有些问题的解决上,运用AOP会使工作更加聪明轻松。AOP使得程序更加模块化,行程多个"关注点",而同一程序的很多部分重复使用这些"关注点"。举个容易懂的例子:系统日志和安全控制是很多程序典型的横切,横切的意思就是把程序横向展开,里面很多方法都会用到这些功能,而AOP是实现横切的有效工具。如果不用AOP,我们要有一个日志类,然后在每一个方法开始和结束时都要调用这个类的两个方法才能完成日志记录功能,而使用AOP之后,只需要声明日志类的相关方法应该在每个方法的开始和结束时调用就可以了。在Spring框架内部,AOP大量用于事务管理中。AOP的核心概念有下面几个:

联结点(JoinPoint):是程序执行过程中的一个特定点。例如:调用一个方法、类初始化、对象初始化等。它用来定义程序在哪里通过AOP加入横向逻辑。是AOP核心

通知(Advice):在某一个联结点处运行的代码成为通知.根据在联结点之前执行和之后执行分为前置通知和后置通知。

切入点(Pointcut):来定义某一个通知该何时执行的一组联结点。通常会组件复杂的切入点来控制通知什么时候运行。很重要

方面:通知 切入点的组合为方面,AOP就是指面向方面编程,指定义了逻辑和何时执行该逻辑。

织入(Weaving):将方面真正加入程序代码的过程。静态AOP在编译阶段完成。而Sping中在动态运行时完成。

目标(Target):指受到AOP修改的对象,也叫被通知对象。

引入(Introduction):通过引入,我们可以在一个对象中加入新的方法和属性,改变它的结构。即使一个类没有实现某接口,我们也可以修改它,使它像是实现了这个接口。

同样AOP分为静态和动态的。静态是指横切逻辑实在编译时就加入程序中的,如果修改横切需要重新编译代码,例如AspectJ。而Spring中是动态的,也就是运用了上面IOC的思想,横切逻辑在运行时动态加入。静态和动态的在一起使用时功能更加强大

spring的的特性和用法

一、Spring框架的特性
Spring框架主要用于与其他技术(struts,hibernate等)进行整合,可将应用程序中的Bean组件实现低耦合关联.最终可以提高系统扩展和维护性。 将来我们利用Spring框架管理系统的各个组件(Action,Service,DAO)采用Spring的IOC和AOP机制实现各组件的关联.从而实现了低耦合调用.增强了系统可维护性和扩展性.
二、Spring框架容器的基本使用
Spring框架的核心是提供了一个容器,该容器可以对Bean组件进行管理,例如创建Bean对象,销毁一个Bean对象等操作.此外该容器还具有IOC和AOP高级特性,将Bean对象调用解耦.
1、 Spring容器配置
(1)创建工程,在src下引入applicationContext.xml配置文件,并添加spring-ioc开发包
在applicationContext.xml中声明定义Bean组件格式:

(2)Spring容器如何实例化
BeanFactory-->ApplicationContext(推荐)
ApplicationContext ac = 
new ClassPathXmlApplicationContext("xml配置文件")
ac.getBean("标识符")//获取Bean组件对象
(3)Spring容器如何管理Bean组件
    a、控制Bean组件对象的创建方式
元素利用scope属性.Spring可以控制Bean对象创建方式. 默认情况下scope属性可以用singleton和prototype两种值.
singleton:采用单例方式创建(默认采用)
prototype:采用(原型)非单例方式创建
---------------------------------------------------   
在以后Web环境中,scope还可以有几个扩展属性值.
request:将Bean对象与request对象绑定.
session:将Bean对象与session对象绑定.
---------------------------------------------------
  b、Bean组件对象的创建时机
singleton模式:当实例化Spring容器时,会创建所有的单例对象。可以在元素中使用lazy-init属性控制,将对象创建时机延迟到第一次调用getBean方法。 prototype模式:在调用Spring容器的getBean方法时创建。
 c、指定Bean组件对象创建后初始化和销毁处理方法
指定初始化方法:利用元素的init-method属性指定, 指定销毁方法:利用元素的destroy-method属性指定。该属性仅对scope="singleton"有效。