文章目录
1 spring的bean管理(注解)
1.1 注解介绍
写法 : @注解名称(属性名称=属性值)
用法: 使用在类、方法和属性上面
1.2 注解开发准备
- 导入基本jar包,再导入
aop
包用于注解开发 - 创建类、方法
- 创建配置文件,引入beans约束,再引入
spring-context.xsd
用于注解开发 - 开启注解扫描:在xml文件配置
1.3 注解创建对象
在创建对象的类上面使用注解实现,这样就不用每个类都在xml中进行配置,只需要在定义类的时候设置id号就可以了。
spring包括下面注解,:
(1)@Component
(2)@Controller
(3)@Service
(4)@Repository
目前这四个注解功能是一样的,都创建对象
创建对象单实例还是多实例:
1.4 注解注入对象属性
-
@Autowired(value=“类名”)
-
@Resource(name=“类id”)
2. AOP
2.1 概念及原理(掌握)
(1)aop:面向切面编程,扩展功能而不修改源码
(2)aop采取横向抽取机制,取代了传统纵向继承体系重复型代码
(3)aop底层采用动态代理实现
- 有接口情况,使用动态代理创建接口实现类代理对象
- 没有接口情况,使用动态代理创建类的子类代理对象
2.2 操作术语(掌握)
- Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点
- Pointcut(切入点): 实际增强的方法
- Advice(通知/增强): 即增强,所要做的事情就是通知.
– 通知分为前置通知,后置通知,异常通知,最终通知(后置之后),环绕通知(方法的前面和后面) - Aspect(切面): 把增强应用到切入点的过程
- Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.
- Target(目标对象):要增强的类
- Weaving(织入):是把增强应用到目标对象的过程.
- Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类
2.3 aop操作
1 在spring里面进行aop操作,使用aspectj实现
(1)aspectj不是spring一部分,和spring一起使用进行aop操作
(2)Spring2.0以后新增了对AspectJ支持
2 使用aspectj实现aop有两种方式
(1)基于aspectj的xml配置
(2)基于aspectj的注解方式
3.开发准备
(1)除了导入基本的jar包之外,还需要导入aop相关的jar包
(2)创建spring核心配置文件,导入aop的约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
</beans>
- 使用表达式配置切入点
常用的表达式execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
(1)execution(* cn.itcast.aop.Book.add(…)) Book类中的方法add
(2)execution(* cn.itcast.aop.Book.(…)) Book类中的所有方法
(3)execution( .(…)) 所有类中的所有方法
(4)execution(* save*(…)) 匹配所有save开头的方法 - Aspectj的aop操作-使用XML方法
环绕的增强有些区别:
3. dom4j
1 通过log4j可以看到程序运行过程中更详细的信息
(1)经常使用log4j查看日志
2 使用
(1)导入log4j的jar包:log4j.properties
(2)复制log4j的配置文件到src下面
3 在log4j.properties中设置日志级别
(1)info:看到基本信息(常用)
(2)debug:看到更详细信息
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout
4. Spring整合web项目演示
1 演示问题
功能:action调用service,service调用dao
缺陷:每次访问action时候,都会加载spring配置文件
2 解决方案:
(1)在服务器启动时候,创建对象加载配置文件
(2)底层使用监听器、ServletContext对象
3 在spring里面不需要我们自己写代码实现,帮封装
(1)封装了一个监听器,只需要配置监听器 就可以了
(2)配置监听器之前做事情:导入spring整合web项目jar包
(3)指定加载spring配置文件位置