首先我们可能会有这样的需求:依赖注入在javaConfig实现显示配置,而AOP在XML中配置,这就需要javaConfig和xml配置混合使用,就像这样:
@Configuration
@ComponentScan
@ImportResource("classpath*: soundsystem/BlankDisc.xml")
public class TrackCounterConfig {
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TrackCounterConfig.class)
public class TrackCounterTest {}
在javaConfig中用@ImportResource把xml导入进去,然后junit测试时报错,提示错误大概是xml中的内容被忽略。
但是如果把配置只写在Javaconfig或者Xml中,junit测试就能正确运行
后来我尝试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TrackCounterConfig.class,locations = "classpath*: soundsystem/BlankDisc.xml")
public class TrackCounterTest {}
在junit @ContextConfiguration中双导入,也同样报错,提示错误是classes和locations不能同时使用,这时我猜测应该是junit的作者偷懒!!!假如你在@ContextConfiguration中写的是Classes,junit扫描的时候就只会扫描class文件,而忽略所有的xml文件,location时也是同理。(我用的是IDEA+junit4情况是如此,其他用Ecplise或者junit5就不知道是不是这样了)
还有在
locations = "classpath*: soundsystem/BlankDisc.xml
中classpath后面尽量写个*,不然会报错。
在写Spring AOP xml配置时,要导入几个aspectj的包,不然也会报错,详情请看