最近在公司的一个主体是Jfinal,加入了部分Spring的项目中加入了一个新功能,但是遇到了@BY_NAME注解失效的问题,我把部分代码贴出来,希望各位对Jfinal有研究的大神能帮小弟我看看是怎么回事。
这些类都是复制粘贴了以前写好的类,然后把原来的内容删掉以后再写新的代码的,为了保证类上面的注解能发挥原有的功能。
controller类名上面有三个注解,分别是@Before(IocInterceptor.class),@ClearInterceptor(ClearLayer.ALL),@ControllerBind(controllerKey = "/XXX", viewPath = "/XXX"),作用分别是拦截位置,清楚拦截以及映射的访问路径。
在controller中的第一行用@BY_NAME注入了一个services,代码是这样的。
@BY_NAME
private XXXService xxxService;
在MyEclipse中并没有报错,一切引用编译都是正常的,而在运行到xxxService.xx()方法时,控制台抛出异常,错误信息是:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xxxService' is defined
注意这里引号中的是对象名xxxService,并不是类名XXXService.
这个XXXService类的注解有三个,分别是@Repository,@Lazy(true),@Service。applicationContext.xml中的配置是这样的:<context:annotation-config />
<context:component-scan base-package="com.xt" />
希望各位对这方面有研究的大神能够不吝赐教,多谢多谢。