Spring第二天 spring的IOC操作和AOP概念

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>
  1. 使用表达式配置切入点
    常用的表达式 execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
    (1)execution(* cn.itcast.aop.Book.add(…)) Book类中的方法add
    (2)execution(* cn.itcast.aop.Book.(…)) Book类中的所有方法
    (3)execution(
    .(…)) 所有类中的所有方法
    (4)execution(* save*(…)) 匹配所有save开头的方法
  2. 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配置文件位置
在这里插入图片描述

发布了135 篇原创文章 · 获赞 5 · 访问量 7085

猜你喜欢

转载自blog.csdn.net/qq_27921205/article/details/104530648