2

我正在学习 Spring 并观看了一些教程来理解这个概念,但我找不到与我的问题相关的任何示例,所以我什至不确定它是否应该像那样工作,或者我可能不理解这个概念根本

是否可以使用 @Autowire 注释使用 spring 自动装配来构建一个简单的 Java SE 项目,而不必在 spring.xml 中设置 bean 和东西?

就像定义一些组合类一样,将一些 @Autowired 字段定义为 @Component 并且可以使用?

这是带有一般想法的soem代码:

框架.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;

}

主.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 。

你能解释一下缺少什么或如何使它工作吗?代码示例将非常感谢^^

先感谢您。

4

1 回答 1

0
SpringTest tester = new SpringTest();

这不起作用,因为通过自己调用构造函数,它不再是 Spring 托管 bean,因此不符合依赖注入的条件。最重要的是,您绝对没有将其标记SpringTest为 Spring 托管 bean。任何使用的类都@Autowired必须存在于 Spring 容器中。

要完成这项工作,您需要将@Component注释添加到SpringTest,然后ApplicationContext.getBean(SpringTest.class)在您的 main 方法中执行类似的操作。

于 2018-07-11T15:54:57.027 回答