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总结实例之消息 事件
- 泛型DAO和Spring的事务配置问题
- main方法中同时加载多个Spring文件
- Spring学习笔记
- 依赖、依赖倒转原则、IoC/依赖注入、以及在Spring中的实现
- Spring 中的default-lazy-init="true" 和 lazy-init="true"
- 基于注解风格的Spring-MVC的拦截器
- spring基础学习之Ioc-反射简单介绍(四)
- MongoDB整合Spring 详细讲解
- Spring容器的生命周期
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- spring 学习笔记1
- 关于Spring中的ClassPath
- 理解spring
- Spring源码解析—— ClassPathResource类
- Spring整合Struts2的两种方式
- 使用Spring注解来构造IoC容器
- Spring Boot 经常出现的错误:com.fasterxml.jackson.databind.ObjectWriter.forType
- Java本地应用 使用spring 注解初始化
- Spring深入浅出(一)概述