使用Spring嵌套模块

时间:2016-08-19 20:07:47

标签: java spring

我正在使用Spring Framework开发项目。 我创建了大约5个模块,有时一个依赖于其他模块,但它们都处于顶层,到目前为止一切正常。

示例:

数据库模块只有外部依赖

身份模块依赖于数据库模块

Facebook填充模块取决于身份模块

现在,我已经在名为modules的项目的根目录中创建了目录,并将所有模块移入其中(因此它们都是,并且彼此之间的距离相同)。

所有测试都通过,我可以毫无问题地构建/编译和检查类。

然而,现在当我尝试只运行身份模块(不需要facebook的东西)时,spring会抛出异常,它找不到facebook bean。当然它不能,因为没有依赖,但我不想添加这种依赖。 @Configuration是@Lazy所以无论如何都没有创建这样的@Bean。

代码:

new AnnotationConfigApplicationContext(Application.class);

应用程序类是@Lazy @Configuration并且从整个应用程序执行@ComponentScan,据我所知,它也从其他模块中找到@Configuration,然后 - 我不知道为什么 - 试图创建那些@ Bean&# 39;来自其他模块但未按预期失败。

我已经使用git验证过,只有工作状态和不工作状态才会将这些模块移动到新文件夹中。

因此,澄清一下,工作/默认结构是:

/.gradle

/.idea

/DatabaseModule

/IdentityModule

/FacebookModule

/.out

/.gitignore

并且不工作是:

/.gradle

/.idea

/modules/DatabaseModule

/modules/IdentityModule

/modules/FacebookModule

/.out

/.gitignore

代码保持不变。

我认为,如果我将所有依赖项添加到所有模块,那么它将起作用,但出于显而易见的原因,我不想这样做。

我做错了吗? 是否有任何惯例,我正在打破?

奖金问题:嵌套模块与包含模块的普通文件夹有何不同?

编辑: 我还应该注意,所有测试都在两种情况下都通过,但是我没有在测试中使用spring(没有依赖注入) - 只是new或Mock()所有内容

0 个答案:

没有答案