1.--------集合属性注入---------- (参考文档3.3.2.4. 集合)
注入Set,List,Map,Properties类型的属性值
2.----------注解方式配置--------------
注解可以简化XML配置.
(1)自动扫描(引入common-annotation.jar包)
a.首先在spring主配置文件中添加
<context:component-scan base-package="包路径"/>
b.在class中使用注解,指定哪些Bean被纳入容器.
@Component、@Controller、@Service、@Repository
注意 : 扫描的组件默认别名为"类名首字母小写",
可以在注解中指定别名,格式为:@Service("别名")
(2)生命周期控制及scope创建模式
@PostConstruct 等价于<bean/>元素中的init-method
@PreDestroy 等价于<bean/>元素中的destroy-method
@Scope("prototype")等价于<bean/>元素中的scope="prototype"属性
(3)注入
a. @Autowired : 按类型匹配注入.如果需要按照名称,可以使用@Qualifier("personDao")指定Bean别名
@Autowired(required=false) : required属性表示该属性是否必须注入一个对象.
b. @Resource : 默认先按名称,再按类型.如果需要按照名称,可以使用@Resource(name="personDao")
注意:如果单独使用(2),(3)注解,需要在spring配置中添加
<context:annotation-config/>
如果使用(1),(2),(3)注解,只需要指定自动扫描配置就可以.
<context:component-scan base-package="包路径"/>
3.-------------AOP--------------------
AOP:面向切面编程.是对OOP编程的提升,可改善程序结构.
主要思想是将共通处理封装成切面对象,利用Spring容器将切面对象
作用到某一批目标对象之上。当执行目标对象方法时,会执行切面对象的功能.
(1)相关概念
a. 切面:用于封装共通处理(即关注点),将来用于横切多个目标对象
b. 连接点:程序在调用时的某个特定点,比如方法调用或者异常处理.
c. 切入点: 连接点的集合,一个连接点集合的表达式(与正则表达式相似)
d. 通知:在连接点上执行的动作,比如前置通知,后置通知,异常通知,环绕通知,最终通知.
e. 织入:把切面连接到其他应用程序类型或对象上.该过程在运行时完成.
f.目标对象:目标对象
g. AOP代理:Spring容器会为每一个目标对象动态创建一个AOP代理对象.
由该对象执行切面处理方法和目标对象的方法
try{
执行前置通知方法
//执行环绕通知前半部分处理
执行目标对象方法
//执行环绕通知后半部分处理
执行后置通知方法
}catch(){
执行异常通知方法
}finally{
执行最终通知方法
}
(2)AOP示例(注意:引入aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1_3.jar)
execution - 匹配方法执行的连接点,
这是你将会用到的Spring的最主要的切入点指示符。
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
throws-pattern?)
任意公共方法的执行:
execution(public * *(..))
任何一个名字以“set”开始的方法的执行:
execution(* set*(..))
AccountService接口定义的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
在service包中定义的任意方法的执行:
execution(* com.xyz.service.*.*(..))
在service包或其子包中定义的任意方法的执行:
execution(* com.xyz.service..*.*(..))
1.--------AOP注解配置----------
(1)在spring配置文件中启用AOP注解
<aop:aspectj-autoproxy/>
(2)编写切面组件,使用以下注解定义切入点,通知等
@Aspect : 将当前类指定为切面组件
@Pointcut : 定义切入点
@Around("切入点引用")
@Before("切入点引用")
@After("切入点引用")
@AfterReturning(pointcut="切入点",returning="参数名")
@AfterThrowing(pointcut="切入点",throwing="参数名")
2.--------切入点定义-------------
(1) execution表达式 : 匹配方法的连接点.
execution (modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
throws-pattern?)
(2) bean表达式 : 匹配容器中bean对象的id或name属性值
bean (idOrNameOfBean)
(3) within表达式: 匹配某一个或某一批特定类型
within(包名.类型)
示例1:在com.xyz.service.DeptService接口中的任意连接点
within(com.xyz.service.DeptService)
示例2:在service包中的任意连接点
within(com.xyz.service.*)
示例3:在service包或其子包中的任意连接点
within(com.xyz.service..*)
(4) this和target : 匹配某一个类型实例的任意连接点.与within区别在于不允许使用通配符
this(代理对象类型),target(目标对象类型)
示例1 : 实现了AccountService接口的代理对象的任意连接点
this (com.xyz.service.AccountService)
示例2 : 实现AccountService接口的目标对象的任意连接点
target (com.xyz.service.AccountService)
(5) args表达式 : 匹配方法参数类型的连接点
args (参数类型)
示例1 : 任何一个只接受一个参数,
并且运行时所传入的参数是Serializable 接口的连接点
args (java.io.Serializable)
(6)以上表达式可以使用运算符组合
||,&&,!,and,or,not
3.-----------Spring框架作用--------------
Spring框架提供了一套完整的企业级解决方案.基于该框架可以
整合现有流行的Struts,Hibernate等框架.可以降低各层组件之间的依赖性.
4.----------Spring框架对JDBC的支持--------
(1)引入数据库驱动和dbcp连接池的jar包.
commons-dbcp.jar,commons-pool.jar,commons-collections.jar,mysql-connector-java-5.1.6-bin.jar
(2)在spring配置文件中添加dataSource的定义
(3)编写DAO组件,使用JdbcTemplate工具类
(4)在spring配置文件中添加dao定义,注入dataSource对象
注入Set,List,Map,Properties类型的属性值
2.----------注解方式配置--------------
注解可以简化XML配置.
(1)自动扫描(引入common-annotation.jar包)
a.首先在spring主配置文件中添加
<context:component-scan base-package="包路径"/>
b.在class中使用注解,指定哪些Bean被纳入容器.
@Component、@Controller、@Service、@Repository
注意 : 扫描的组件默认别名为"类名首字母小写",
可以在注解中指定别名,格式为:@Service("别名")
(2)生命周期控制及scope创建模式
@PostConstruct 等价于<bean/>元素中的init-method
@PreDestroy 等价于<bean/>元素中的destroy-method
@Scope("prototype")等价于<bean/>元素中的scope="prototype"属性
(3)注入
a. @Autowired : 按类型匹配注入.如果需要按照名称,可以使用@Qualifier("personDao")指定Bean别名
@Autowired(required=false) : required属性表示该属性是否必须注入一个对象.
b. @Resource : 默认先按名称,再按类型.如果需要按照名称,可以使用@Resource(name="personDao")
注意:如果单独使用(2),(3)注解,需要在spring配置中添加
<context:annotation-config/>
如果使用(1),(2),(3)注解,只需要指定自动扫描配置就可以.
<context:component-scan base-package="包路径"/>
3.-------------AOP--------------------
AOP:面向切面编程.是对OOP编程的提升,可改善程序结构.
主要思想是将共通处理封装成切面对象,利用Spring容器将切面对象
作用到某一批目标对象之上。当执行目标对象方法时,会执行切面对象的功能.
(1)相关概念
a. 切面:用于封装共通处理(即关注点),将来用于横切多个目标对象
b. 连接点:程序在调用时的某个特定点,比如方法调用或者异常处理.
c. 切入点: 连接点的集合,一个连接点集合的表达式(与正则表达式相似)
d. 通知:在连接点上执行的动作,比如前置通知,后置通知,异常通知,环绕通知,最终通知.
e. 织入:把切面连接到其他应用程序类型或对象上.该过程在运行时完成.
f.目标对象:目标对象
g. AOP代理:Spring容器会为每一个目标对象动态创建一个AOP代理对象.
由该对象执行切面处理方法和目标对象的方法
try{
执行前置通知方法
//执行环绕通知前半部分处理
执行目标对象方法
//执行环绕通知后半部分处理
执行后置通知方法
}catch(){
执行异常通知方法
}finally{
执行最终通知方法
}
(2)AOP示例(注意:引入aspectjrt.jar,aspectjweaver.jar,cglib-nodep-2.1_3.jar)
execution - 匹配方法执行的连接点,
这是你将会用到的Spring的最主要的切入点指示符。
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
throws-pattern?)
任意公共方法的执行:
execution(public * *(..))
任何一个名字以“set”开始的方法的执行:
execution(* set*(..))
AccountService接口定义的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
在service包中定义的任意方法的执行:
execution(* com.xyz.service.*.*(..))
在service包或其子包中定义的任意方法的执行:
execution(* com.xyz.service..*.*(..))
1.--------AOP注解配置----------
(1)在spring配置文件中启用AOP注解
<aop:aspectj-autoproxy/>
(2)编写切面组件,使用以下注解定义切入点,通知等
@Aspect : 将当前类指定为切面组件
@Pointcut : 定义切入点
@Around("切入点引用")
@Before("切入点引用")
@After("切入点引用")
@AfterReturning(pointcut="切入点",returning="参数名")
@AfterThrowing(pointcut="切入点",throwing="参数名")
2.--------切入点定义-------------
(1) execution表达式 : 匹配方法的连接点.
execution (modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
throws-pattern?)
(2) bean表达式 : 匹配容器中bean对象的id或name属性值
bean (idOrNameOfBean)
(3) within表达式: 匹配某一个或某一批特定类型
within(包名.类型)
示例1:在com.xyz.service.DeptService接口中的任意连接点
within(com.xyz.service.DeptService)
示例2:在service包中的任意连接点
within(com.xyz.service.*)
示例3:在service包或其子包中的任意连接点
within(com.xyz.service..*)
(4) this和target : 匹配某一个类型实例的任意连接点.与within区别在于不允许使用通配符
this(代理对象类型),target(目标对象类型)
示例1 : 实现了AccountService接口的代理对象的任意连接点
this (com.xyz.service.AccountService)
示例2 : 实现AccountService接口的目标对象的任意连接点
target (com.xyz.service.AccountService)
(5) args表达式 : 匹配方法参数类型的连接点
args (参数类型)
示例1 : 任何一个只接受一个参数,
并且运行时所传入的参数是Serializable 接口的连接点
args (java.io.Serializable)
(6)以上表达式可以使用运算符组合
||,&&,!,and,or,not
3.-----------Spring框架作用--------------
Spring框架提供了一套完整的企业级解决方案.基于该框架可以
整合现有流行的Struts,Hibernate等框架.可以降低各层组件之间的依赖性.
4.----------Spring框架对JDBC的支持--------
(1)引入数据库驱动和dbcp连接池的jar包.
commons-dbcp.jar,commons-pool.jar,commons-collections.jar,mysql-connector-java-5.1.6-bin.jar
(2)在spring配置文件中添加dataSource的定义
(3)编写DAO组件,使用JdbcTemplate工具类
(4)在spring配置文件中添加dao定义,注入dataSource对象