“”中构造函数的参数 0 需要一个“”类型的 bean,但无法找到
Posted
技术标签:
【中文标题】“”中构造函数的参数 0 需要一个“”类型的 bean,但无法找到【英文标题】:Parameter 0 of constructor in "" required a bean of type "" that could not be found 【发布时间】:2021-12-10 02:52:57 【问题描述】:@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);
【问题讨论】:
@user7294900 感谢您的回复。我试过你的建议,但它仍然会给出同样的错误:( 你的 spring 配置 XML 不属于你的 pom.xml 如果使用注解,则不需要使用 XML 配置。您可以将您的主要课程添加到问题中吗?谢谢。 1.如果您将 Spring bean 配置放在 pom.xml 中,那么您还有很长的路要走。 2. 快到 2022 年了,没有人再使用 Spring XML config 了。我猜是结合不同的互联网搜索的结果? Spring Boot 上的“入门”教程有数百个,只要按照最近的一个,根据需要更改代码即可。 【参考方案1】:一点背景知识:我几年前就开始了我的项目,但后来被跟踪了,现在又重新开始了。
对我有用的是从一个基本的 spring-boot 项目开始,然后添加我的类并在我进行时进行修复。
正如@JoãoDias 在 cmets 中链接的那样:https://www.baeldung.com/spring-boot-start 是我获得基本弹簧靴的地方。 (查看文章中的 Spring Initializr)。
@AbhijitSarkar 还建议说“没有人再使用 Spring XML 配置”这实际上反映了我何时开始这个项目。也非常敏锐,他能够得到暗示我的问题是由于互联网搜索组合造成的。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于“”中构造函数的参数 0 需要一个“”类型的 bean,但无法找到的主要内容,如果未能解决你的问题,请参考以下文章
Controller 中构造函数的参数 0 需要一个找不到的 Service 类类型的 bean
com.din.OSS 中构造函数的参数 0 需要找不到类型为“java.lang.String”的 bean
如何解决此问题:LoginController 中构造函数的参数 0 需要找不到类型为“OktaOAuth2Properties”的 bean