"" 中构造函数的参数 0 需要找不到 " " 类型的 bean



@RestController及其设置工作良好。当我试图将服务添加到控制器并自动连接它们时,我遇到了一个障碍。

据我所知,一切看起来都很好:它构建得很好,IDE无法检测到任何问题。但是我好像少了点什么,因为它跑不动了。

***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in org.church.id.controller.ChapterController required a bean of type 'org.church.id.service.ChapterService' that could not be found.

Action:
Consider defining a bean of type 'org.church.id.service.ChapterService' in your configuration.

ChapterController.java

@RestController
@Log4j
public class ChapterController {
@Getter
private Map<Integer, Chapter> chapters;
private ChapterService chapterService;
@Autowired
public ChapterController(ChapterService chapterService) {
this.chapterService = chapterService;
}
public void loadChapters() throws SQLException {
log.debug("Loading chapters...");
if (chapters != null) {
chapters.clear();
}
chapters = chapterService.findAll().stream().collect(Collectors.toMap(Chapter::getId, Function.identity()));
}
@GetMapping("/chapter/list")
public String list() throws SQLException {
if (chapters == null) {
loadChapters();
}
return chapters.values().stream().map(Chapter::getName).collect(Collectors.joining(", "));
}
}

在我的applicationContext.xml(我的错。我最初输入的是pom.xml)

...
<bean id="chapterController" class="org.church.id.controller.ChapterController">
<constructor-arg name="chapterService" ref="chapterService"/>
</bean>
<bean id="chapterService" class="org.church.id.service.impl.ChapterServiceImpl">
<constructor-arg name="config" ref="dbConfig"/>
<constructor-arg name="addressUtil" ref="addressUtil"/>
</bean>
...

真正的pom.xml

...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
...

ChapterServiceImpl.java

@Log4j
@AllArgsConstructor
@Setter
@Service
public class ChapterServiceImpl implements ChapterService {
private DBConfig config;
private AddressUtil addressUtil;
...
}

ChapterService.java(接口)

public interface ChapterService extends Service<Chapter> {
Collection<Chapter> findByCountry(Country country) throws SQLException;
}

我在这里找了一下,但以下这些方法对我都有效

  • [x]添加(exclude = {DataSourceAutoConfiguration.class})@SpringBootApplication
  • [x]将@Qualifier("chapterService")添加到构造函数的参数前:ChapterService chapterService

还要注意:我已经将其修改为只有一个默认构造函数,但是当我试图通过setter注入时,会发生相同类型的错误。我不知道怎么了。(

编辑:MainClassController.java

@SpringBootApplication
public class MainClassController {
private ClassInfo model;
private HashMap<Integer, String> classMap;
public MainClassController() {
loadData();
}
public void loadData() {
}
public static void main(String[] args) {
SpringApplication.run(MainClassController.class, args);
}
}

小背景:我几年前开始了我的项目,但后来偏离了方向,现在又重新开始了。

对我来说有效的是从一个基本的spring-boot项目开始,然后添加我的类并在我进行的过程中进行修复。

正如@ joodias在评论中所链接的那样:https://www.baeldung.com/spring-boot-start是我得到我的基础弹簧靴的地方。(查看文章中的Spring initializer)。

@AbhijitSarkar还建议"没有人再使用Spring XML配置了";这实际上是我开始这个项目时的一种反思。他也很有洞察力,能够看出我的问题是由互联网搜索组合引起的。

相关内容

  • 没有找到相关文章

最新更新