gpt4 book ai didi

java - 在独立的 Java 应用程序中使用 Spring 3 Autowiring

转载 作者:IT老高 更新时间:2023-10-28 13:01:36 26 4
gpt4 key购买 nike

这是我的代码:

public class Main {

public static void main(String[] args) {
Main p = new Main();
p.start(args);
}

@Autowired
private MyBean myBean;
private void start(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/config.xml");
System.out.println("my beans method: " + myBean.getStr());
}
}

@Service
public class MyBean {
public String getStr() {
return "string";
}
}

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="mypackage"/>
</beans>

为什么这不起作用?我得到 NullPointerException。是否可以在独立应用程序中使用 Autowiring ?

最佳答案

Spring 在独立应用程序中工作。您使用错误的方法来创建一个 Spring bean 。这样做的正确方法是:

@Component
public class Main {

public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/config.xml");

Main p = context.getBean(Main.class);
p.start(args);
}

@Autowired
private MyBean myBean;
private void start(String[] args) {
System.out.println("my beans method: " + myBean.getStr());
}
}

@Service
public class MyBean {
public String getStr() {
return "string";
}
}

在第一种情况下(问题中的那个),您是自己创建对象,而不是从 Spring 上下文中获取它。所以 Spring 没有机会 Autowire 依赖项(这会导致 NullPointerException)。

在第二种情况下(此答案中的那个),您从 Spring 上下文中获取 bean,因此它由 Spring 管理,Spring 负责 autowiring

关于java - 在独立的 Java 应用程序中使用 Spring 3 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659720/

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