gpt4 book ai didi

java - 如何在 Spring-Boot 中启动主类?

转载 作者:行者123 更新时间:2023-12-02 02:15:41 26 4
gpt4 key购买 nike

我想执行一个非常简单的示例来解释 Spring-Boot 中的 IoC 概念。

为此,我创建了一个 Bean,它将 @Autowired 获取到主类,该主类有一个对 bean 执行某些操作的方法。

bean :

enter image description here

主要:

@Component
public class MyMain {

@Autowired
private MyBean bean1;

public void usingTheBean()
{
bean1.setName("Thats my first bean!");
bean1.setAttribute("And thats just an attribute");

System.out.println(bean1);
}
public static void main(String[] args) {
//MyMain main = new MyMain();
//main.usingTheBean();
}
}

我的 SpringBoot 应用程序:

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
MyMain main = new MyMain();
main.usingTheBean();
}
}

我怎样才能开始主课?没有得到

java.lang.NullPointerException 

主线程中的@Autowired Bean“MyBean”?

我知道 NullPointer-Exception 的原因是我使用“new”关键字创建了 Main-class。

但是问题更多地集中在“如何使用 spring-boot 启动主类”这个问题

最佳答案

通常,您不想直接使用上下文来自己创建 bean。您应该让上下文初始化,然后使用 Autowiring 的 bean。最有可能的是,您解决这个问题的方式与 Spring 实现它的方式非常不同。

您应该看看以下示例:

  • 使用 CommandLineRunner 界面(请参阅 here )或
  • 使用 InitializingBean 接口(interface)(请参阅 here)

或者,您可以通过配置解决此问题:

@Configuration
public class MyConfig {

@Bean
public MyBean myBean() {
MyBean bean = new MyBean();
bean.setName("...");
bean.setAttribute("...");
return bean;
}
}

然后您可以简单地使用

@Autowired
MyBean myBean;

Autowiring 它。

另一种选择是从配置文件(例如 application.properties)注入(inject)值(如果您的情况可行的话):

@Component
public class MyBean {

@Value("${my.config.value}")
private String name;

@Value("${my.config.attribute}")
private String attribute;

public MyBean(){

}
...

在您的 application.properties 中包含以下条目:

my.config.value = Some value content
my.config.attribute = Some attribute content

关于java - 如何在 Spring-Boot 中启动主类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335495/

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