Spring 笔记
2009-07-13 10:25
337 查看
1
IoC : Inversion of Control 控制反转
应用本身不负责对象的创建和维护,而是由外部容器负责,使用依赖注入来获取对象;
控制权就由应用移到了外部容器,控制权的转移就是反转;
实现依赖注入: 反射 DependencyInjection : DI
2 依赖注入
(1) 方法: 构造函数; setter;
(2) 在运行期,由外部容器动态的将bean注入到对象中
3 为何使用Spring
(1) 降低耦合度;
(2) 使用Spring提供的众多服务; 如 事务管理;消息服务
(3) 单例模式支持;
(4) AOP技术,实现:权限拦截等等;
(5) 众多的辅助类:如JdbcTemplate, HibernateTemplate
(6) 对主流的应用框架提供了集成支持:Hibernate, JPA, Struts,Hibernate;
4 轻量级与重量级概念的划分
Spring: 默认不为应用打开全部服务;
EJB: 默认为应用打开全部服务;
5. Spring什么时候创建bean实例?
默认情况下,容器实例化的时候创建
6 bean的作用域; 默认情况下是单例的。
scope="prototype" --- 每次getBean返回一个新的对象;
7 init-method="init" --- bean初始化后立即完成一个操作(bean.init())
destroy-method="destroy" ---bean销毁前立即完成一个操作(bean.destroy())
AbstractApplicationContext.close();
8 bean的创建:
(1) 类构造器实例化
(2) 静态对象工厂来创建 :很少用
(3) 实例工厂方法实例化:几乎不用,它需要实例化工厂
9 注入集合类型
(1) Set sets; setSets();
<propertyname="sets">
<set>
<value>set1</value>
</set>
</property>
(2) List lists; setLists();
<propertyname="lists">
<list>
<value>list1</value>
</list>
</property>
(3) Map maps; setMaps();
<propertyname="maps">
<map>
<entrykey="key1"value="value1"></entry>
</map>
</property>
(4) Properties properties;setProperties();
<propertyname="properties">
<props>
<porpkey="key1">value1</prop>
</props>
</property>
(5) 数组同list方式;
10 注解方式实现依赖对象的装配:可以减少配置文件的臃肿
@Autowired(类型装配),
@Autowired(required=false) @Qualifier("personDAO") 按名称装配
@Resource(按照name, 字段名称,类型来注入)
11 自动装配 <bean ... autowire="byName /byType ...." />
12 自动扫描功能
context:component-scan base-package="", 该包下全部的类及其子包的全部类做成bean
需要被扫描的类加上注解
@Component, @Service, @Controller,@Repository
@Repository("personDAO") 指定名称
@Repository @Scope("singleton") 默认为单例模式
13 AOP
目标对象:被代理的对象 --- target
通知(Advice):我们要做的工作 ----- doXXX()
在方法前:前置通知
在方法后:后置通知
异常: 例外通知
finally: 最终通知;
在内部决定目标方法是否被调用:环绕通知;
连接点:被拦截的方法
切入点:一批连接点的集合(n>=0)
切面:Factroy
织入:
引入:在不修改类代码的前提下,可以在运行期为他引入方法和字段;
14
//注解方式:
@Aspect
public class.....{
@Pointcut("execution(* cn.itcast.service.impl.PersonServiceBean.*.*(..))")
private void anyMethod()
//声明 anyMethod()切入点
@Before("anyMethod()")
@AfterReturning 后置
@AfterThrowing 例外
@After 最终
@Arround
}
//配置xml方式:
<aop:config>
<aop:aspect ref="XMLBeanInterceptor">
<!-- 声明切入点 -->
<aop:pointcut id="pc" expression="* cn.itcast.service..*.*(..)" />
<!-- 通知 -->
<aop:before pointcut-ref="pc" method="beforeAdvice" />
...
</aop:aspect>
</aop:config>
15 事务
查询不用开事务
@Transactional(propagation=Propagation.NOT_SUPPORTED)
IoC : Inversion of Control 控制反转
应用本身不负责对象的创建和维护,而是由外部容器负责,使用依赖注入来获取对象;
控制权就由应用移到了外部容器,控制权的转移就是反转;
实现依赖注入: 反射 DependencyInjection : DI
2 依赖注入
(1) 方法: 构造函数; setter;
(2) 在运行期,由外部容器动态的将bean注入到对象中
3 为何使用Spring
(1) 降低耦合度;
(2) 使用Spring提供的众多服务; 如 事务管理;消息服务
(3) 单例模式支持;
(4) AOP技术,实现:权限拦截等等;
(5) 众多的辅助类:如JdbcTemplate, HibernateTemplate
(6) 对主流的应用框架提供了集成支持:Hibernate, JPA, Struts,Hibernate;
4 轻量级与重量级概念的划分
Spring: 默认不为应用打开全部服务;
EJB: 默认为应用打开全部服务;
5. Spring什么时候创建bean实例?
默认情况下,容器实例化的时候创建
6 bean的作用域; 默认情况下是单例的。
scope="prototype" --- 每次getBean返回一个新的对象;
7 init-method="init" --- bean初始化后立即完成一个操作(bean.init())
destroy-method="destroy" ---bean销毁前立即完成一个操作(bean.destroy())
AbstractApplicationContext.close();
8 bean的创建:
(1) 类构造器实例化
(2) 静态对象工厂来创建 :很少用
(3) 实例工厂方法实例化:几乎不用,它需要实例化工厂
9 注入集合类型
(1) Set sets; setSets();
<propertyname="sets">
<set>
<value>set1</value>
</set>
</property>
(2) List lists; setLists();
<propertyname="lists">
<list>
<value>list1</value>
</list>
</property>
(3) Map maps; setMaps();
<propertyname="maps">
<map>
<entrykey="key1"value="value1"></entry>
</map>
</property>
(4) Properties properties;setProperties();
<propertyname="properties">
<props>
<porpkey="key1">value1</prop>
</props>
</property>
(5) 数组同list方式;
10 注解方式实现依赖对象的装配:可以减少配置文件的臃肿
@Autowired(类型装配),
@Autowired(required=false) @Qualifier("personDAO") 按名称装配
@Resource(按照name, 字段名称,类型来注入)
11 自动装配 <bean ... autowire="byName /byType ...." />
12 自动扫描功能
context:component-scan base-package="", 该包下全部的类及其子包的全部类做成bean
需要被扫描的类加上注解
@Component, @Service, @Controller,@Repository
@Repository("personDAO") 指定名称
@Repository @Scope("singleton") 默认为单例模式
13 AOP
目标对象:被代理的对象 --- target
通知(Advice):我们要做的工作 ----- doXXX()
在方法前:前置通知
在方法后:后置通知
异常: 例外通知
finally: 最终通知;
在内部决定目标方法是否被调用:环绕通知;
连接点:被拦截的方法
切入点:一批连接点的集合(n>=0)
切面:Factroy
织入:
引入:在不修改类代码的前提下,可以在运行期为他引入方法和字段;
14
//注解方式:
@Aspect
public class.....{
@Pointcut("execution(* cn.itcast.service.impl.PersonServiceBean.*.*(..))")
private void anyMethod()
//声明 anyMethod()切入点
@Before("anyMethod()")
@AfterReturning 后置
@AfterThrowing 例外
@After 最终
@Arround
}
//配置xml方式:
<aop:config>
<aop:aspect ref="XMLBeanInterceptor">
<!-- 声明切入点 -->
<aop:pointcut id="pc" expression="* cn.itcast.service..*.*(..)" />
<!-- 通知 -->
<aop:before pointcut-ref="pc" method="beforeAdvice" />
...
</aop:aspect>
</aop:config>
15 事务
查询不用开事务
@Transactional(propagation=Propagation.NOT_SUPPORTED)
相关文章推荐
- Spring常见异常笔记(5)
- Spring ApplicationContext中的”事件传递“笔记
- Spring与mybatis整合---Mybatis学习笔记(十一)
- spring代码笔记
- spring-security学习笔记--配置文件
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-009-用SPEL给bean运行时注入依赖值
- 学习笔记:springmvc4.3源码学习:spring解析配置文件过程
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-003-Spring对AOP支持情况的介绍
- spring学习笔记
- HttpMessageConverters-spring-boot(1.5.6)-cloudfeign1.3.4 学习笔记
- 学习Struts+spring+hibernate的笔记(2)
- Spring笔记(第六弹:spring framework核心组件maven依赖关系)
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-012-AOP总结
- springMVC学习笔记,SpringMV与web项目的整合(xml方式)
- Spring 习笔记之bean 之间的关系
- SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-006-处理表单数据(注册、显示用户资料)
- [Spring]Spring AOP学习笔记(4)--Spring 事务
- SPRING IN ACTION 第4版笔记-第六章RENDERING WEB VIEWS-003- SPRING的GENERAL TAG LIBRARY简介及用<s:message>和ReloadableResourceBundleMessageSource实现国际化
- Spring.NET学习笔记13——AOP的概念(基础篇) Level 200
- Spring学习笔记二-collection