Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧自动连线为空_Java_Spring_Dependency Injection_Autowired - Fatal编程技术网

Java 弹簧自动连线为空

Java 弹簧自动连线为空,java,spring,dependency-injection,autowired,Java,Spring,Dependency Injection,Autowired,我有一个简单的代码来理解SpringDI的功能 这是我在tester.java中的代码: package.com.email; @组成部分 公共类测试员{ @自动连线 专用静态EmailService EmailService; 公共静态void main(字符串[]args){ ApplicationContext上下文=新的ClassPathXmlApplicationContext(“spring config.xml”); System.out.println(“emailService

我有一个简单的代码来理解SpringDI的功能

这是我在
tester.java中的代码:

package.com.email;
@组成部分
公共类测试员{
@自动连线
专用静态EmailService EmailService;
公共静态void main(字符串[]args){
ApplicationContext上下文=新的ClassPathXmlApplicationContext(“spring config.xml”);
System.out.println(“emailService:+emailService);//为空
}
}
接口电子邮件服务{
字符串sayHello();
}
@组成部分
类EmailServiceImpl实现EmailService{
公共字符串sayHello(){
回复“你好”;
}
}
下面是
spring config.xml



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

注释不起作用,因为字段是
静态的
。换成

@Autowired
private EmailService emailService;

注释不起作用,因为该字段是静态的。换成

@Autowired
private EmailService emailService;

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

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

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

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

这是因为注释不起作用。@RomanC为什么?我在
xml
文件中激活了它。@RomanC我收到警告:
静态字段不支持自动连线批注:private static com.email.EmailService com.email.Tester.EmailService
@RomanC我制作了
EmailService
static以便能够在main方法中测试它,解决方案是什么?这是因为注释不起作用。@RomanC为什么?我在
xml
文件中激活了它。@RomanC我收到警告:
静态字段不支持自动连线批注:private static com.email.EmailService com.email.Tester.EmailService
@RomanC我制作了
EmailService
static以便能够在main方法中测试它,解决方案是什么?那么我如何在
main
方法中测试它呢?简单的方法是使用
ctx.getBean()
。那么我如何在
main
方法中测试它呢?简单的方法是使用
ctx.getBean()