您的位置:首页 > 编程语言 > Java开发

Spring

2013-10-30 11:36 405 查看
Spring容器的实例化的两种方式:

1、使用ApplicationContext加载配置文件(推荐使用本方法)

ApplicationContext ac = new ClassPathXmlApplicationContext(“com/demo/applicacionContext.xml”);配置文件在工程目录里

或者ApplicationContext ac = new FileSystemXmlApplicationContext(“D:/applicationContext.xml”);配置文件在硬盘里

2、applicationContext是BeanFactory的子类

Resource re = new ClassPathResource(“com/demo/applicacionContext.xml”);配置文件在工程目录里

BeanFactory bc = new XmlBeanFactory(re);

Bean bean = bc.getBean("bean在配置文件的id名");

或者Resource re = new FileSystemResource(“com/demo/applicacionContext.xml”);配置文件在硬盘里
BeanFactory bc = new XmlBeanFactory(re);
Bean bean = bc.getBean("bean在配置文件的id名");


IOC


Spring对Bean组建的管理


1、bean组建的创建时机

默认随着容器创建。我们可以使用延迟加载机制(在对应的bean组件配置lazy-init="true")在getBean的时候创建。

或者使用批量延迟加载,在头文件后添加default—lazy-init="true"进行批量延迟。

2、Bean的创建模式

默认单例模式,当然也可以使用scope属性进行修改。

singleton:单例模式,每次返回同一个bean

prototype:原型模式,每次返回一个新的bean

request:仅限Web环境,生命周期和request相同

session:仅限Web环境,生命周期和session相同

global session:仅限Web环境,生命周期和application相同

3、Bean对象的初始化和销毁

init-method:用于指定初始化方法

destroy-method:用于指定销毁方法,仅适用于singleton模式


DI依赖注入:DI依赖注入是Ioc实现的重要技术,有两种方式


1、setter方式注入(推荐使用):给需要注入的类添加接口属性和其get/set方法,applicationContext里给需要注入的类引入接口实现类的bean的id。

2、构造方式注入:给需要注入的类添加接口属性以及构造实例方法,applicationContext里给需要注入的类引入<constructor-arg index="" ref="实现类">


AOP


什么是Aop及其好处?

Aop是面向切面编程。

好处:Aop切入点是共通处理。通过配置文件可以将共通的处理作用在一个或多个目标对象上,可以增加代码重用,使程序结构更好,更灵活。

Aop相关概念

1、Adpect切面:指的是共通业务处理,可以作用在一个或多个目标对象;

2、JoinPoint连接点:指的是切面组件在目标对象上作用的位置;

3、PointCut切入点:切入点事连接点的集合,采用表达式指定;

4、Target Object目标对象

5、Advice通知:切面组件在连接点上执行的动作;

6、AutoProxy动态代理:采用Aop之后,容器返回的时代里对象,用户调用的时候,有代理对象调用切面组件。

有接口的话使用JDK代理;

没有接口的话,采用CGLIB代理。

aop.xml配置:

<bean id="userService" class="com.maomao.service.UserServiceImpl"/>

<bean id="optLogger" class="com.maomao.OptLogger"/>

<aop:config>

<aop:pointcut id="servicePointcut" exprssion="execution(*com.maomao.service.*.*(..))"/>

<aop:aspect id="logAspect" ref="optLogger">

<aop:before method="logger" pointcut-ref="servicePointcut"/>

</aop:aspect>

</aop:config>

通知类型

<aop:before/>前置通知,在目标方法调用前执行,不影响后续执行,除非抛异常;

<aop:around/>环绕通知,在目标方法调用前和调用后都执行;

<aop:after-returning/>后置通知,在目标方法调用后执行,出异常不执行;

<aop:after/>最终通知,在目标方法调用后执行,不管是否有异常都执行;

<aop:after-throwing/>异常通知,出现异常才会调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring