Spring_day02

来源:互联网 发布:服装设计cad软件 编辑:程序博客网 时间:2024/05/15 00:39

Spring_day02

上节内容回顾

1 spring的概念

1)核心:iocaop

 

2 springbean管理(xml

1bean实例化

2)注入属性

- set方法

- 有参构造

3)注入对象属性

 

3 iocdi

1ioc:控制反转,把对象创建交给spring管理

2di:依赖注入,创建对象过程中,向属性设置值

 

4 在服务器启动时候加载配置文件,创建对象

1ServletContext对象

2)监听器

今天内容介绍

1 springbean管理(注解)

1)使用注解创建对象

2)使用注解注入属性

 

2 AOP

1aop概述

2aop底层原理

3aop操作相关术语

- 切入点

- 增强

- 切面

 

3 springaop操作(基于aspectjxml方式)

1)使用表达式形式

 

Spring的bean管理(注解)

1 注解:代码中特殊标记,使用注解可以使用类、方法、属性上面,使用注解实现功能

2 写法: @注解名称(属性=属性值)

 

使用注解创建对象

第一步导入jar

1)导入spring基本的jar

2)使用注解方式导入aopjar

 

第二步创建类,创建方法

 

第三步创建spring配置文件

1)在xml配置文件中引入约束

 

2)在spring配置文件中,开启注解扫描

 

第四步在创建对象所在的类上面使用注解实现

 

测试代码

创建对象的注解的总结

1 创建对象的注解有四个:

1@Component

2@Repository用于对DAO实现类进行标注

3@Service用于对Service实现类进行标注

4@Controller用于对Controller实现类进行标注

 

上面四个注解都可以创建对象,目前这四个注解功能是一样的

Spring为了后续扩展

 

2 有注解,设置创建对象是单例或者多实例

使用注解注入属性(对象)

1 创建service类,创建dao

1)在service里面调用dao的方法

2)在service里面得到dao对象

 

2 使用注解完成注入操作

第一步service里面定义dao类型属性

 

第二步进行注解方式实现注入

1)创建dao对象和service对象

 

2)在service里面注入dao对象

- service里面dao属性上面使用注解实现

** 使用注解@Autowired

 

** 使用注解@Resource

 

AOP概述

1 aop:面向切面编程,

1)扩展功能不是通过修改源代码实现

 

2 aop采用横向抽取机制实现

1)之前web阶段,写过baseservlet,采用不是横向机制,而是纵向机制:servlet继承baseservlet实现

2)使用动态代理增强类里面的方法

 

3 aop底层使用动态代理实现

1)有接口情况:创建接口实现类代理对象

2)没有接口情况:创建增强方法所在类的子类代理对象

 

AOP术语

Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring,这些点指的是方法,因为spring只支持方法类型的连接点.

 

Pointcut(切入点):实际增强的方法

 

Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.

通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

 

Aspect(切面):是切入点和通知的结合

1)把具体的逻辑用到具体的方法上面

 

Target(目标对象):代理的目标对象(要增强的类)

 

Weaving(织入):是把增强应用到目标的过程.

       advice应用到 target的过程

 

Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类

 

Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.

 

Spring的aop操作

1 spring中使用aspectj实现aop操作

1aspectj不是spring一部分,单独面向切面框架,经常和spring一起使用进行aop

2spring2.0开始使用aspectj实现aop

3)使用aspectj导入相关的jar

 

2 使用aspectj实现aop操作两种方式

1)基于aspectjxml配置文件

2)基于aspectj的注解

 

基于aspectj的xml方式

Aspej表达式

1 使用aspectj的操作,基于表达式形式进行切入点配置

execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)

 

1)对User类里面的add方法

- 第一个参数: *表示类里面方法publicprivate都增强

- 添加空格,第二个参数:增强的方法所在类全路径

--- 类的全路径后面增强的方法名称

execution(*  cn.itcast.User.add(..))

 

2)对User类里面的所有方法

execution(*  cn.itcast.User.*(..))

 

3)对所有类里面的所有的方法

execution(*  *.*(..))

 

具体操作(xml)

第一步导入jar

(1)  导入基本的jar

(2)  导入aopaspectjjar

 

第二步创建类,创建方法

1)创建增强的类,增强的方法

Book类里面add方法之前执行MyBook类里面before1的方法

 

第三步spring配置文件中进行配置

1)在spring配置文件中引入aop约束

2)配置两个类对象

3)配置aop操作

- 配置切入点

- 配置切面

 

演示其他通知类型

1)环绕通知

 

Log4j操作

1 使用log4j,可以查看到当前运行程序中对象创建过程,可以看到更详细的信息

1)使用在调试程序中

 

2 使用

1)导入log4jjar

2)复制log4j配置文件,复制到src下面

 

3 设置日志的输出级别

1infodebugerror

 

Ioc配置文件和注解混合使用

1 使用配置文件方式创建对象

2 使用注解方式注入属性

 

3 具体例子

1)创建对象,使用配置文件实现

2)在service里面注入dao对象,使用注解方式

 

 

演示spring整合web项目

1 action调用serviceservice调用到

1action多实例对象,每次访问action都创建对象

功能可以实现,但是性能很低

 

2 解决方案:

1)使用ServletContext对象

2)监听器

在服务器启动时候创建ServletContext对象,使用监听器可以知道ServletContext对象在什么时候创建,加载配置文件,创建配置的对象,把创建对象放到servletcontext里面

 

3 spring里面不需要我们写这些操作,进行封装

1)在spring封装了一个监听器,只需要配置监听器就可以了

 

4 使用spring里面的监听器时候,需要导入jar包,这个jar包用于整合web项目

5 启动服务器,出现异常

1)服务器启动时候,默认到WEB-INF下面找名称是applicationContext配置文件

 

6 手动配置找哪个spring配置文件

 

 


0 0
原创粉丝点击