Tag: aop

是否可以在Java SE环境中使用javax.interceptor?

我需要使用AOP来解决特定问题,但它是一个小型的独立Java程序(没有Java EE容器)。 我可以使用javax.interceptorfunction,还是必须下载一些第三方AOP实现? 如果可能的话,我宁愿使用Java SE SDK附带的东西。

弹簧靴中的Aop问题

我的应用程序类 import com.example.haha.Haha; import com.example.hehe.Hehe; import com.example.logging.Logging; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy public class DemoApplication { public static void main(String[] args) throws InterruptedException { ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args); for(String name:ctx.getBeanDefinitionNames()){ System.out.println(name); } Haha haha = (Haha)ctx.getBean(“hh”); haha.haha1(); haha.haha2(); return; } } Haha.java package com.example.haha; import […]

Spring AOP – 从catch块调用建议

目的:每次执行业务逻辑时发生exception,都会向管理员发送电子邮件。 直到现在我遇到了“抛出建议”,这很好并且在从目标方法引发exception时执行。 这可能对我有用,但我必须在设置请求属性和下一页方面做一些额外的处理。 我认为通过使这些对象保持静态来与目标类共享对象并不是一个好主意。 代码场景如下所示: try{ //normal processing } catch (AuthenticationException ae) { ae.printStackTrace(); req.setAttribute(“msg”, ae.getMessage()); //execute advice at this point return loginPage; } PLS。 看看我想要执行建议并相应地建议解决方案。 最好的祝福

如何横切注释的方法和构造函数?

这就是我正在做的事情: @Aspect public class MethodLogger { @Around(“(execution(* *(..)) || initialization(*.new(..))) && @annotation(Foo)”) public Object wrap(ProceedingJoinPoint point) throws Throwable { // works fine, but only for methods } } 该代码段工作正常,但仅适用于方法调用。 这是AspectJ maven插件在应用方面后所说的(不是在编译期间,它工作得很好): around on initialization not supported (compiler limitation) 任何解决方法? 我在使用OpenJDK 7: java version “1.7.0_05” Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM […]

Java中面向方面的编程

面向方面编程的Java最佳工具是什么? 工具的要求当然是IDE支持,表现力和适当的文档。

如何使用AOP拦截File,FileReader,FileWriter,FileInputStream和FileOutputStream的构造函数?

我想拦截File,FileReader,FileWriter,FileInputStream和FileOutputStream的构造函数,并阻止任何文件名包含“..”(以防止路径遍历攻击)或“\ 0”(以防止文件名空字符攻击)。 我还有一个关于如何使用SecurityManager做同样事情的公开问题,但还没有人回答它,所以我希望这种替代方法能够起作用。 这是tomcat上的spring webapp。 我知道我可以手动执行此操作,方法是创建自己的SafeFile,SafeFileReader等类,然后修改代码以使用它们。 但是,我们的代码中有960个地方使用这些对象的构造函数,所以我宁愿避免这种情况,除非这是唯一的方法。

AOP中Advisor和Aspect之间有什么区别?

我是Spring AOP的新手。 根据我的理解,我注意到Advisor(例如DefaultPointcutAdvisor )和Aspect(例如使用@Aspect注释的类)都可以通过在调用方法时执行更多操作来帮助解决交叉问题。 请问这两个学期有什么不同?

如何在Spring 3中将@Aspect与@Controller结合起来?

我正在尝试使用@Controller,基于注释的方法设置Spring 3 Web MVC项目。 package my.package @Controller @RequestMapping(“/admin/*”) public class AdminMultiActionController { @RequestMapping(value = “admin.htm”, method = RequestMethod.GET) public String showAdminSection() { return “admin”; } 我的dispatcher-servlet具有以下Controller处理程序: 使用提供的maven工件,webapp运行良好: org.springframework spring-webmvc 3.0.2.RELEASE 现在我想添加@AspectJ AOP。 我得到了libs: org.aspectj aspectjweaver 1.6.9 org.aspectj aspectjrt 1.6.9 添加到我的applicationContext.xml: 确保在applicationContext.xml中创建相关的bean: 并开始充实@Aspect: package my.package.service @Aspect public class SecurityInterceptor { @Pointcut(“execution(* showAdminSection(..))”)// the pointcut expression private […]

是否有使用带注释的方法参数启用JSR 303 Bean Validation的标准方法

我一直在寻找一段时间而没有运气。 我没有使用Spring MVC,但仍希望使用@javax.validation.Valid来启用方法参数的validation。 举个例子 public class EventServiceImpl implements IEventService { @Override public void invite(@Valid Event event, @Valid User user) { … } } 使用MVC,这为@Controller注释bean启用了一个简单的 (参见5.7.4.3配置一个JSR-303validation器供Spring MVC使用 )。 使用AOP应该是非常简单的。 不过,我怀疑有一些标准的方法可以做到这一点。 因此,问题是:对于非MVC应用程序和非控制器bean,是否存在类似的事情,以便为带注释的bean启用输入validation?

Java:基于注释的代码注入的简单技术?

有没有办法让这个代码工作? LogonControl.java @Audit(AuditType.LOGON) public void login(String username, String password) { // do login } AuditHandler.java public void audit(AuditType auditType) { // persist audit } 结束游戏,每次调用login()时,也会调用audit(),并使用相应的audittype。 我想AOP可能是解决方案,但我希望它尽可能简单(我看过的AspectJ教程通常都有非常复杂的注释)。 注意:我不想预定义将调用audit的方法,我是为可扩展框架编写的,其他人可能需要使用它。