gpt4 book ai didi

java - Spring 启动错误 : No bean named 'myController' available

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:55 25 4
gpt4 key购买 nike

我正在用SpringBoot构建一个“hello world”的基本程序

代码

我的 Controller .java

package controllers;
import org.springframework.stereotype.Controller;

@Controller
public class MyController {
public String hello() {
System.out.println("Hello World");
return "foo";
}
}

DemoApplication.java

package di.prac;

import java.util.Arrays;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

import controllers.MyController;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
ApplicationContext ctx=SpringApplication.run(DemoApplication.class, args);
MyController m = (MyController)ctx.getBean("myController");
m.hello();
System.out.println("*******"+Arrays.asList(ctx.getBeanDefinitionNames()));

}
}

我正在使用 eclipse 并从 http://start.spring.io/ 创建了这个项目没有任何依赖。

我了解到 Spring 创建了名为 myControllerMyController 类的 bean,但是 Spring 找不到 myController bean

错误

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myController' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:686) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1210) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089) at di.prac.DemoApplication.main(DemoApplication.java:16)

请找出并解释项目中的错误

最佳答案

将 Controller 放在 di.prac 的子包下,如 di.prac.controllers 或在 Controller 上使用 @ComponentScan。默认情况下,Spring 会扫描主应用程序所在的当前包和子包。如果你也想扫描其他包,那么你可以在 @SpringBootApplication 中指定包作为参数,例如。

@SpringBootApplication(scanBasePackages = {"com.xyz.controllers", "com.abc.models""})

我们应该避免将@Configuration 类放在默认包中(即根本不指定包)。在这种情况下,Spring 会扫描类路径中所有 jar 中的所有类。这会导致错误并且应用程序可能无法启动。

关于java - Spring 启动错误 : No bean named 'myController' available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com