Spring 面向切面 代理

Aop(Aspect Oriented Programming), 即面向切面编程,可以说是OOP的补充和完善,与OOP有些区别,

AOP技术恰恰相反,它利用一种称为"横面"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用的模板,并将其命名为"Aspect",即切面,所谓"切面",简单说就是那些与业务无关,却为业务模板所公共调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模板之间的耦合度,并有利于未来的可操作性和可维护性。

给大家简单介绍一下一种模式:代理模式,分别在java,spring

Java中的静态代理模式:

实现步骤:

1 建立一个接口

package com.zking.proxy;

public interface Istr {
	
    public void sing();
}

 

2创建类实现接口

package com.zking.proxy;
/*
 * 明星类
 */
public class Lyf implements Istr{
	
	
	@Override
	public void sing() {
		System.out.println("这就是灌篮!");	
	}

}

3创建代理类实现接口(构造方法中要求传入接口作为参数)

package com.zking.proxy;
/**
 * 
 * @author 助理类
 *
 */
public class  zxj  implements Istr{
	
    private Istr istr;
      
	public zxj(Istr istr) {
		super();
		this.istr = istr;
	}

	@Override
	public void sing() {
		istr.sing();
	}

}

4测试类调用代理类进行测试

package com.zking.proxy;

public class Temp {

	public static void main(String[] args) {
//		Istr lyf=new Lyf();
//		zxj n=new zxj(lyf);
//		n.sing();
//		Istr fz=new FZ();
//		zxj n1=new zxj(fz);
//		n1.sing();
		
	}
}

 

举一个列子:明星,助理,具体明星,就是明星是一个接口,一个抽象类,助理去实现代理,让某个具体明星实现代理的东西,

 

 

Spring 中的动态代理模式:

1创建一个接口

package com.zking.proxy3;

public interface Iperson {
	//睡觉的方法
     public void sleep();
     //add的方法
     public void personAdd();
}

2实现接口的类 XIaoMing类

package com.zking.proxy3;

public class XiaoMing implements Iperson{

	@Override
	public void sleep() {
	System.out.println("睡觉");
		
	}

	@Override
	public void personAdd() {
		System.out.println("add");
		
	}

	
}

3 在applicationContext.xml里面写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<!-- 配置一个目标 -->		
<bean id="xm" class="com.zking.proxy3.XiaoMing"></bean>

<!-- 配置一个混合的代理 -->
<bean id="myproxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 引入目标 -->
<property name="target" ref="xm"></property>

<!-- 代理类的接口 -->
  <property name="proxyInterfaces">
  <list>
  <value>com.zking.proxy3.Iperson</value>
  </list>
  </property>
 
</bean>

</beans>

4测试类 

package com.zking.proxy3;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Temp3 {
	@Test
	public void SpringBean() {
     ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");
     Iperson ip=(Iperson) ac.getBean("myproxy");
     ip.sleep();
     //ip.personAdd();
	}
}

以上就是java的静态代理,spring的动态代理。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值