MethodBeforeAdvice 动态代理的接口,只能用于原始方法之前
public class ProxyAccount implements MethodBeforeAdvice {
@Override
public void before ( Method method, Object[ ] objects, Object o) throws Throwable {
System. out. println ( "动态代理" ) ;
}
}
MethodInterceptor 动态代理的接口,可以作用于原始方法的前后
public class ProxyAccount implements MethodInterceptor {
@Override
public Object invoke ( MethodInvocation methodInvocation) throws Throwable {
System. out. println ( "前置通知" ) ;
Object result = methodInvocation. proceed ( ) ;
System. out. println ( "后置通知" ) ;
return result;
}
}
InitializingBean Bean的初始化,发生在set注入之后
public class User implements InitializingBean {
@Override
public void afterPropertiesSet ( ) throws Exception {
System. out. println ( "初始化" ) ;
}
}
BeanPostProcessor 出现在初始化前后,进行Bean的加工
public class User implements BeanPostProcessor {
@Nullable
public Object postProcessBeforeInitialization ( Object bean, String beanName) throws BeansException {
return bean;
}
@Nullable
public Object postProcessAfterInitialization ( Object bean, String beanName) throws BeansException {
return bean;
}
}
FactoryBean 用于创建复杂对象
public class User implements FactoryBean < Connection> {
@Override
public Connection getObject ( ) throws Exception {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
Connection connection = DriverManager. getConnection ( "jdbc:mysql://localhost:3306/db1" , "root" , "root" ) ;
return connection;
}
@Override
public Class< ? > getObjectType ( ) {
return Connection. class ;
}
@Override
public boolean isSingleton ( ) {
return false ;
}
}
Converter<String,Date> 类型转化器接口
public class User implements Converter < String, Date> {
@Override
public Date convert ( String s) {
SimpleDateFormat sf = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
Date date= null;
try {
date= sf. parse ( s) ;
} catch ( ParseException e) {
e. printStackTrace ( ) ;
}
return date;
}
}