Java 来自 xml returns 空指针异常的 beans

Java Beans from xml returns null pointer exception

嗨,我的应用程序有点问题。 我正在尝试从 xml.

获取 bean 数据

beans.xml

        <bean id="s3Bean" class="com.example.demo.controller.S3Bean">
            <property name="s3Host" value="${s3.host}" />
            <property name="s3AccessKey" value="${s3.accessKey}"/>
            <property name="s3SecretKey" value="${s3.secretKey}"/>
            <property name="s3Bucket" value="${s3.bucket}"/>
        </bean>

S3Bean.java

@ImportResource("classpath:beans.xml")
public class S3Bean {

    private String s3Host;
    private String s3AccessKey;
    private String s3SecretKey;
    private String s3Bucket;

    public void setS3AccessKey(String s3AccessKey) {
        this.s3AccessKey = s3AccessKey;
    }

    public void setS3SecretKey(String s3SecretKey) {
        this.s3SecretKey = s3SecretKey;
    }

    public void setS3Bucket(String s3Bucket) {
        this.s3Bucket = s3Bucket;
    }

    public void sets3Host(String s3Host) {
        this.s3Host = s3Host;
    }
}

Class也有吸气剂。 在我的控制器中,我正在尝试获取这样的 bean。

    public S3Bean getS3Bean() {return S3Bean;}
    public void setS3Bean(S3Bean s3Bean) {S3Bean = s3Bean;}
    private S3Bean S3Bean;
...
    S3Bean.getS3Host();

这得到returns 空指针。 当我从应用程序上下文中获取 bean 时,它打印正常。

            ApplicationContext ctx = new ClassPathXmlApplicationContext("/beans.xml");
            S3Bean bean = ctx.getBean(S3Bean.class);
            System.out.println(bean.toString());

你能解释一下为什么让 属性 剂量起作用的第一种方法吗?

堆栈跟踪

java.lang.NullPointerException: null
    at com.example.demo.controller.hello.sayHello(hello.java:27) ~[classes/:na]

27行是S3Bean.getS3Host();

我发现了问题所在。我没有在 beans.xml.

中声明 S3Bean
        <bean id="springBean.Impl" class="com.example.demo.controller.Impl">
            <property name="S3Bean" ref="springBean.S3Bean"/>
        </bean>