我正在学习Spring,并观看了一些教程来理解这个概念,但我找不到任何与我的问题相关的例子,所以我甚至不确定它是否应该这样工作,或者我可能根本不理解这个概念
是否可以使用@Autowire注释使用spring-Autowire构建一个简单的JavaSE项目,而不必在spring.xml中设置bean和其他东西?
就像定义一些组合类一样,有一些@Autowired字段定义为@Component,可以吗?
以下是soem代码的总体思想:
Framework.java
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;
@Component
@Getter
@Setter
public class Framework {
private String insertTest;
}
SpringTest.java
import org.springframework.beans.factory.annotation.Autowired;
public class SpringTest {
@Autowired
private Framework testeFramework;
}
Main.java
public class Main {
public static void main(String[] args) {
SpringTest tester = new SpringTest();
tester.getTesteFramework().setInsertTest("dummy");
System.out.println(tester.getTesteFramework().getInsertTest());
}
}
到目前为止,我正在从tester.getTesteFramework((指令中获得NullPointException。
你能解释一下缺了什么吗?或者如何让它发挥作用?代码示例将被大大简化^^
提前谢谢。
SpringTest tester = new SpringTest();
这是不可行的,因为通过自己调用构造函数,它不再是Spring管理的bean,因此不符合依赖注入的条件。除此之外,您决没有将SpringTest
标记为Spring管理的bean。任何使用@Autowired
的类都必须位于Spring容器中。
要实现这一点,您需要将@Component
注释添加到SpringTest
中,然后在主方法中执行类似ApplicationContext.getBean(SpringTest.class)
的操作。