SSM基础知识点(2)

Spring-beans

Factory-bean技术

简单对象:通过new的方式可以创建的对象叫简单对象

复杂对象:不能通过new的方式创建的对象叫复杂对象

作用:创建复杂对象

1.开发步骤

I.创建类实现FactoryBean接口 泛型为自己创建的复杂对象的类型

II.在Spring的配置文件中进行配置

III.测试

注:通过Id获取的不是MyConnection对象,而是由该类创建的复杂对象

如果想要获取该类的对象,只要在创建对象的时候,ID前加&号

1.控制创建简单对象的次数

2.spring为什么需要我们制定创建对象的次数

开发者更熟悉对象特性,可以节约资源

3.spring工厂创建对象的生命周期

对象什么时候创建? Spring工厂被创建,则对象被创建

对象什么时候被销毁?Spring工厂被销毁(调用.close()方法),则对象被销毁

AOP(Aspect Oriented Programming) 面向切面编程

核心:代理设计模式

1.静态代理设计模式(static proxy)

I.service   

核心:   核心功能:一定要有的功能,没有的话业务无法完成

处理业务的逻辑代码         额外功能:核心功能基础上添加的功能(可有可无)

调用Dao中的方法

额外:

控制事务

II.在service中应不应该有额外功能?

业务调用者:

service中必须有额外功能,没有额外功能,业务将面临风险

代码设计者:

service中不应该有额外功能,违反java中的各司其职性,额外功能经常需要被修改,不免影响核心功能

矛盾:静态代理设计模式来解决

III.生活案例:租房

租房 ---- 中介Service{  ----   房东service{

租房(){    租房(){

//打广告

//带客户看房 额外功能由中介来做

//找房东

    核心:

   //签合同

   //收钱

   }

    }

IV.静态代理中的概念

原始类:只负责核心功能的类

原始方法:原始类中的方法

代理类:给原始类添加额外功能的类

V.静态代理的本质:代理类只负责额外功能,原始类只负责核心功能,通过代理类为原始类增加额外功能

VI.静态代理的缺点

①类过载

有一个原始类,就需要写一个代理类,造成类过载

②额外功能代码冗余,不利于项目的维护

动态代理设计模式(Dynamic Proxy)

一、开发步骤

  1. 开发原始类 -- 核心功能

①规范

②原始类

1.配置原始类的相关信息

2.定义额外功能

3.配置额外功能类的相关信息

4.定义切点

5.组装切面

6.测试

  • 切入点表达式的含义

分类:(3种) 方法切入点、类切入点、包切入点

1.方法切入点 -- 维度:只与方法有关,与类和包无关

例:①为注册regist()方法添加额外功能

②为带有一个参数为String类型的regist()方法添加额外功能

③为带有两个参数为String类型的regist()方法添加额外功能

④为第一个参数为String类型,后面参数不管的regist()方法添加额外功能

2.类切入点

例:为所有包以及子包下的UserServiceImpl类中的第一个参数为String的regist()方法添加额外功能

3.包切入点

例:为com.hp.service中的UserServiceImpl类的带一个String参数的regist方法添加额外功能

  • 切入点函数

除execution外,常用的还有args和within

1.args:只专注于方法的参数

例:①为带有一个参数为String类型的regist()方法添加额外功能

  原:execution(* *(String))

args(String)

        ②为第一个参数为String类型,后面参数不管的regist()方法添加额外功能

原:execution(* *(String,..))

args(String,..)

2.within:只专注于包和类

例:①给UserServiceImpl类中的所有方法添加额外功能

原:execution(* *..UserServiceImpl.*(..))

within(*..UserServiceImpl)

②给com.hp.service包以及子包下所有类中的方法添加额外功能

原:execution(* com.hp.service..*.*(..))

within(com.hp.service..*)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值