我正在尝试在Domino XPages Java类中使用Spring注释。当我在配置文件中定义bean时,Spring工作。但是我没有使用注释。
为了说明问题,我创建了两个用@Component
注释注释的简单空类 - com.geo168.a.B
(@Component public class B {}
)和com.geo168.a.C
(@Component public class C {}
)< / p>
我在Eclipse中创建的第一个,打包并添加到jar中的应用程序中。第二个我直接在Code / Java部分添加。
我在配置文件中添加了一个组件扫描标记:<context:component-scan base-package="com.geo168.a"/>
并尝试实例化这些类:
ApplicationContext ctx = new ClassPathXmlApplicationContext(SPRING_CONFIG);
// class defined in the jar, works ok
com.geo168.a.B b = ctx.getBean(com.geo168.a.B.class);
// class defined in Code/Java, throws exception
com.geo168.a.C c = ctx.getBean(com.geo168.a.C.class);
我收到错误:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.geo168.a.C] is defined
Spring只在JAR文件中找到了带注释的类。如果我将bean显式添加到配置文件中,它就可以工作:
<bean class="com.geo168.a.C"/>
类似的帖子:Is possible to add annotation @ManagedBean in XPages?似乎只解决了特定的JSF注释(不起作用,因为它们没有实现)。
在Spring文档中:http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-scanning-autodetection我找到了一个注释:The scanning of classpath packages requires the presence of corresponding directory entries in the classpath. When you build JARs with Ant, make sure that you do not activate the files-only switch of the JAR task.
这可能与某种程度有关吗?我不知道Domino以什么形式在内部部署类。