Java/Spring/MethodBeforeAdvice
Implements MethodBeforeAdvice To Check Parameters
<source lang="java">
File: context.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="afterBean" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target"> <bean class="MtBean"> <property name="firstName" value="AAA"/> </bean> </property> <property name="interceptorNames"> <list> <idref bean="nullArgumentsNotAllowedBeforeAdvice"/> </list> </property> <property name="proxyTargetClass" value="true"/> </bean> <bean id="nullArgumentsNotAllowedBeforeAdvice" class="NullArgumentsNotAllowedBeforeAdvice"/>
</beans>
File: Main.java import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main {
public static void main(String[] args) throws Exception { BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("context.xml")); MtBean testBean = (MtBean) beanFactory .getBean("afterBean"); testBean.showValues(); }
} class MtBean {
private String firstName; public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public void showValues() { System.out.println("First name: " + this.firstName); }
} class NullArgumentsNotAllowedBeforeAdvice implements MethodBeforeAdvice {
public void before(Method method, Object[] arguments, Object target) throws Throwable { if (arguments == null || arguments.length == 0) { return; } for (int i = 0; i < arguments.length; i++) { Object argument = arguments[i]; if (argument == null) { throw new IllegalArgumentException( "Value for argument [" + i + "] is required but not present " + "for method [" + method + "]!" ); } } }
}
</source>