我有3个Spring项目:'web',worker'和'core'。
<dependency>
<groupId>com.proyecti.magmainside221b</groupId>
<artifactId>core</artifactId>
<version>1.0.0.RC1</version>
</dependency>
当我在Tomcat中部署'web'项目时,看起来'core'中的Java配置bean没有被初始化,因为' 数据源 'bean(在'core'中定义) “@Bean在@Configuration注释的一个类中的项目”未被发现注入 'PersistentTokenBasedRememberMeServices' 。
Caused by:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices#0': Cannot create inner bean '(inner bean)#1978517' of type [org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#1978517': Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'dataSource' is defined
在部署“web”项目时,我需要做些什么来从'core'项目初始化我的java配置bean?
谢谢!
我在日志中发现正在加载我的applicationContext文件。
2014-09-22 15:04:37,922 INFO [unknown] [localhost-startStop-1] o.s.b.f.x.XmlBeanDefinitionReader - Loading XML bean definitions from file [/home/aacevedo/workspaces/magma/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/web/WEB-INF/classes/META-INF/spring/applicationContext.xml]
2014-09-22 15:04:37,940 INFO [unknown] [localhost-startStop-1] o.s.b.f.x.XmlBeanDefinitionReader - Loading XML bean definitions from URL [jar:file:/home/aacevedo/workspaces/magma/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/web/WEB-INF/lib/core-1.0.0.RC1.jar!/META-INF/spring/applicationContext-core.xml]
我的'核心'项目我(认为)不需要applicationContext,因为我使用的是Java配置,我的主要配置类看起来像这样:
@Configuration
@EnableSpringConfigured
@EnableTransactionManagement
@EnableJpaRepositories("com.proyecti.magma.common.datasources.internal.repositories")
@ComponentScan( basePackages = {"com.proyecti.magma"},
excludeFilters=
{
@ComponentScan.Filter(type=FilterType.ANNOTATION, value=Controller.class)
})
@Order(1)
public class BasicDataSourceConfig
{
...
}
我在BasicDataSourceConfig构造函数中放了一个断点但是没有到达它。
当我统一这个项目时,一切正常。
更新2:
这就是我的项目结构:
答案 0 :(得分:2)
您需要使用@Import
注释将“核心”上下文导入“网络”上下文。
答案 1 :(得分:0)
最后,我找到了一个适合我的配置。
在使用注释的配置方式中包含 @ComponentScan 时,似乎没有检测到...我已创建了一个常规的applicationContext.xml文件我的网络&#39; project使用XML添加组件扫描对象,现在两个项目中的@Configuration类都被成功检测到了。