有没有一种方法可以有条件地创建方面介绍?我想要的是有条件地使用Spring AOP扩展一个类:
@Aspect
public class Test1Aspect {
@DeclareParents(value="com.test.testClass",defaultImpl=Test1Impl.class)
public ITest iTest;
}
@Aspect
public class Test2Aspect {
@DeclareParents(value="com.test.testClass",defaultImpl=Test2Impl.class)
public ITest iTest;
}
所以testClass根据我设置该选项的属性文件扩展Test1Impl或Test2Impl,这是可能的吗?我如何排除被调用的Aspects,我尝试使用aspectj-maven-plugin,但它不排除我的Aspects:
pom。xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<sources>
<source>
<basedir>src/main/java</basedir>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</source>
</sources>
</configuration>
<executions>
<execution>
<goals>
<!-- use this goal to weave all your main classes -->
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
编辑
我删除了aspectj maven插件,只使用Spring AOP,以下是配置和测试方面:
一个plication.java
@Configuration
@ComponentScan(basePackages= {
"demo"
//"demo.aspect"
})
@EnableAutoConfiguration(exclude=AopAutoConfiguration.class)
//@EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED)
@EnableAspectJAutoProxy
public class Application {
public static final Logger LOGGER = LogManager.getLogger(Application.class);
@Bean
public testService testService() {
return new testService();
}
@Bean
@Conditional(TestCondition.class) //CLASS THAT ONLY RETURNS TRUE OR FALSE
public TestAspect testAspect() {
LOGGER.info("TEST ASPECT BEAN");
TestAspect aspect = Aspects.aspectOf(TestAspect.class);
return aspect;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
测试方面
//@Component
//@Profile("asdasd")
//@Configurable
//@Configuration
@Aspect
public class TestAspect{
public static final Logger LOGGER = LogManager.getLogger(TestAspect.class);
@Autowired
private testService testService;
public TestAspect() {
LOGGER.info("TEST ASPECT INITIALIZED");
}
@Around("execution(* demo.testControllerEX.test(*))")
public String prevent(ProceedingJoinPoint point) throws Throwable{
LOGGER.info("ASPECT AROUND " + testService); // ALWAYS CALLED NO MATTER IF THE CONDITION IS FALSE, THE ONLY DIFFERENCE IS THAT testService IS NULL WHEN THE CONDITION IS FALSE.
String result = (String)point.proceed();
return result;
}
/*@DeclareParents(value="(demo.testControllerEX)",defaultImpl=TestControllersImpl.class)
private ITestControllerEX itestControllerEX;*/
}
您可以在xml bean定义文件中使用条件注释或属性资源占位符配置器。
例如,对于xml
test.aspect = org.example.Test1Aspect
<context:property-placeholder location="configuration.properties" />
<bean id="testAspect" class="${test.aspect}" />
Spring AOP不需要maven aspectj插件。
最后我找到了解决方案,主要问题是在我的Eclipse项目中,我在Spring工具的选项菜单中启用Spring Aspects工具(右键单击项目),并且以某种方式在Spring AOP之前使用传统的Ashej编译我的方面,因此解释了为什么无论我在方面使用哪个条件总是被应用。
因此,解决方案是不要启用Spring Aspectj工具。或者,如果已启用,请在project AspectJ工具中单击鼠标右键-
我的任务是统计一年中每月租车的数量。 这是我对计算“新租金”的质疑。
人们经常问,我在1975年提出的观点和建议,哪些是我仍然坚持的,哪些是已经改变观点的,是怎样改变的?尽管我在一些讲座上也分析过这个问题,我还是一直想把它写成文章。 Peter Gordon 现在是 Addison-Wesley 的出版伙伴,他从1980年开始和我共事。他非常耐心,对我帮助很大。他建议我们准备一个纪念版本。我们决定不对原版本做任何修订,只是原封不动地重印(除了一些细小的修正),并用更
像上一章所展示的那样,许多简单的同步问题都可以用互斥体解决。这一章中我会介绍一个更大的挑战,著名的“生产者-消费者”问题,以及一个用于解决它的新工具,条件变量。 10.1 工作队列 在一些多线程的程序中,线程被组织用于执行不同的任务。通常它们使用队列来相互通信,其中一些线程叫做“生产者”,向队列中放入数据,另一些线程叫做“消费者”,从队列取出数据。 例如,在GUI应用中,可能有一个运行GUI的线程
主要内容:读者,前提条件,Spring AOP 概述Spring框架的关键组件之一是面向方面编程(AOP)框架。 面向方面的编程需要将程序逻辑分解成不同的部分。 此教程将通过简单实用的方法来学习Spring框架提供的AOP/面向方面编程。 读者 本教程主要是为Spring 面向方面编程(AOP)初学者准备的,帮助他们了解与Spring的AOP框架相关的基础到高级概念。 前提条件 在开始练习本教程系列文章中给出的各种类型的示例之前,我们假设您已经了解
问题内容: 我有一张表,叫他们 我需要和每月的记录。 因为Aria和Brian每月收入只有Belle&Ziya1个,而Chloe每月收入只有2个。因此,在部门BB中,只有1即Aria,而部门CC为0,因为Chloe&Ziya。 这是我的意思是示例输出: 问题答案: 请尝试以下操作: 请在 此处 找到db <> fiddle 。
我遇到以下错误 ORA-01843:不是有效月份 底层视图