最近复习了一下spring 的技术知识
文章目录
动态代理
动态代理是spring 的一个底层核心技术,一般通过一下的3个步骤实现
1.一个接口
2.接口的实现类
3.动态代理类
一个简单的例子,新建一个Person的接口,然后实现一个Man 的类,在创建一个动态代理类进行代理,在Man 的输方法前后加上输出当前的系统时间
Person.class
public interface Person {
void hello(String name);
}
Man.class
public class Man implements Person {
public void hello(String name) {
System.out.println("你好 我是" + name);
}
}
动态代理类
public class DynamicProxy implements InvocationHandler {
private Person person;
public DynamicProxy(Person person) {
this.person = person;
}
/**
*
* @param proxy 被代理的类
* @param method 方法
* @param args 参数
* @return
* @throws Throwable
*/
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("开始" + System.currentTimeMillis());
method.invoke(person, args);
System.out.println("结束" + System.currentTimeMillis());
return null;
}
}
调用类
public class DynamicClient {
public static void main(String[] args) {
Person p = new Man();
//生成了一个动态代理类
Person proxyPerson = (Person)
Proxy.newProxyInstance(p.getClass().getClassLoader(), p.getClass().getInterfaces(), new DynamicProxy(p));
proxyPerson.hello("谢子豪");
}
}
Spring 简单的Bean 例子
定义一个Car
的类,其中有个一个 版本(brand)成员变量,然后通过spring 配置文件将这个参数的属性进行注入
Car.class
public class Car {
private String brand;
public void setBrand(String brand) {
this.brand = brand;
}
public void run() {
System.out.println(brand + "牌子的汽车在跑");
}
}
applicationContext.xml
这个配置文件就是spring 的配置文件,我这里放在了IDEA 的resource文件夹下
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<bean id="car" class="springDemo.Car">