繁体   English   中英

弹簧自动接线为空

[英]Spring autowired is null

我有一个简单的代码来了解Spring DI功能。

这是我在tester.java代码:

package com.email;

@Component
public class Tester {

    @Autowired
    private static EmailService emailService;

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        System.out.println("emailService: " + emailService); // is null
    }
}

interface EmailService {
    String sayHello();
}

@Component
class EmailServiceImpl implements EmailService {

    public String sayHello() {
        return "Hello";
    }
}

这是spring-config.xml

<bean id="emailService" class="com.email.EmailServiceImpl"/>
   <context:annotation-config/>
   <context:component-scan base-package="com.email"/>

我声明了引用EmailServiceImpl类的emailService bean,为什么我在emailService得到null

注释无效,因为该字段是static 更改为

@Autowired
private EmailService emailService;

问题是您试图通过自动装配设置的字段被声明为静态。 从设计的角度来看,在静态字段上使用依赖项注入确实没有任何意义,但是,如果必须的话,可以使用setter方法。

@Autowired
void setEmailService (EmailService emailService) {
  Tester.emailService = emailService;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM