Com*_*ple 1 java spring maven spring-boot
我正在为一个问题而苦苦挣扎,但我不知道如何解决它。
这是我使用 Maven 的项目的结构:
我的项目:
我在moduleB中写了两个接口,其中一个在moduleB中实现,另一个在moduleC中实现。
问候语界面:
public interface Greeting {
WelcomeMessage greet();
}
Run Code Online (Sandbox Code Playgroud)
它的实现写在 moduleB 上:
@Component
public class HelloWorld implements Greeting {
private final Messages messages;
public HelloWorld(Messages messages) {
this.messages = messages;
}
@Override
public WelcomeMessage greet() {
return messages.getWelcomeMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
消息接口:
public interface Messages {
WelcomeMessage getWelcomeMessage();
}
Run Code Online (Sandbox Code Playgroud)
它的实现写在 moduleC 上:
@Component
public class MessagesImpl implements Messages {
private final Mapper mapper;
private final MessageRepository messageRepository;
public MessagesImpl(Mapper mapper, MessageRepository messageRepository) {
this.mapper = mapper;
this.messageRepository = messageRepository;
}
@Override
public WelcomeMessage getWelcomeMessage() {
// do something with repository and mapper
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 Spring 似乎没有使用 moduleC 中的 Messages 实现,当我启动应用程序时会显示此错误:
**required a bean of type 'fr.mypackage.core.spi.Messages' that could not be found**
Run Code Online (Sandbox Code Playgroud)
而且 IntelliJ 一直告诉我 MessagesImpl 从未被使用过。
这是我为我的图书馆所做的事情:
@ComponentScanorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.my.library.MyLibraryConfiguration
Run Code Online (Sandbox Code Playgroud)
@Import(com.example.my.library.MyLibraryConfiguration)对于模块,我推荐自动配置方法。您可以@ComponentScan从主应用程序中获取库的包,但我不建议这样做,它会给您带来较少的控制并且可能会很混乱。
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |