有没有办法使此代码有效?
LogonControl.java
@Audit(AuditType.LOGON)
public void login(String username, String password) {
// do login
}
AuditHandler.java
public void audit(AuditType auditType) {
// persist audit
}
Endgame是,每次调用login()时,也会调用带有适当的audittype的audit()。
我想AOP可能是解决这个问题的方法,但是我希望它尽可能简单(我看过的AspectJ教程通常都有非常复杂的注释)。
注意:我不需要预先定义调用audit的方法,我正在为可扩展的框架编写它,而其他人可能需要使用它。
使用反射很容易,只需使用@Audit注释方法,就像JUnit中的测试运行器一样:
public interface Login {
void login(String name, String password);
}
public class LoginImpl implements Login {
@Audit(handler = LoginHandler.class)
public void login(String name, String password) {
System.out.println("login");
}
}
@Audit定义为:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Audit {
Class<? extends Handler> handler();
}
处理程序在哪里:
interface Handler {
void handle();
}
class LoginHandler implements Handler {
public void handle() {
System.out.println("HANDLER CALLED!");
}
}
现在是真正的代码:
public class LoginFactory {
private static class AuditInvocationHandler implements InvocationHandler {
private final Login realLogin;
public AuditInvocationHandler(Login realLogin) {
this.realLogin = realLogin;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Method realMethod = realLogin.getClass().getMethod(
method.getName(),
method.getParameterTypes());
Audit audit = realMethod.getAnnotation(Audit.class);
if (audit != null) {
audit.handler().newInstance().handle();
}
return method.invoke(realLogin, args);
}
}
public static Login createLogin() {
return (Login) Proxy.newProxyInstance(
LoginFactory.class.getClassLoader(),
new Class[]{Login.class},
new AuditInvocationHandler(new LoginImpl()));
}
}
@测试:
Login login = LoginFactory.createLogin();
login.login("user", "secret");
login.logout();
输出:
叫人叫!
登录
登出
我已将我的Spring应用程序配置如下: 我使用组件扫描来选择@配置。我的问题是Spring会为B注入豆子吗
我的Spring应用程序由两个上下文xml配置文件组成,第一个是根上下文。xml仅扫描非控制器带注释的bean: 而第二个servlet上下文。xml包含所有spring mvc设置和扫描控制器带注释的bean web.xml上的DispatcherServlet配置如下所示 我想尝试基于注释的缓存,所以我将以下bean定义添加到root-context.xml 并使用一个带有注释的类来测试这一点
本文向大家介绍基于SSM框架实现简单的登录注册的示例代码,包括了基于SSM框架实现简单的登录注册的示例代码的使用技巧和注意事项,需要的朋友参考一下 一、环境配置工程目录 在pom.xml添加依赖 数据库驱动配置 jdbc.properties spring-web.xml 二、具体逻辑实现数据访问对象(DAO接口) UserDao.java UserDao.xml 控制器 UserControll
我正在开发基于SpringMVC注释的应用程序。我有一个网络。xml文件条目如下(使用WebConfig.java进行配置): 现在,当我尝试集成与安全相关的XML文件时,我面临以下错误 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为springSecurityFilterChain的beanorg.sp
当我使用Spring framework时,我经常看到2个术语基于Java和基于注释的配置/自动生成。 如果它们不一样,你能告诉我它们之间有什么不同吗?
问题内容: 我希望能够自动连接单例bean() 由另一个单例方法()创建 使用xml就是。我该如何使用注释? 问题答案: 尝试使用Java :