我做了一個示例程序泄露我的問題:爲什麼@Autowired在應用程序和測試中的工作方式不同?
package test;
public interface InterfaceA {
}
package test;
public class ClassA implements InterfaceA {
}
package test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Application {
@Bean
public InterfaceA beanA() {
return new ClassA();
}
@Autowired
private ClassA beanA;
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext
= new AnnotationConfigApplicationContext(Application.class);
}
}
@Autowired不與該應用程序代碼的具體類的工作。
package test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
public class ApplicationTest {
@Autowired
ClassA beanA;
@Test
public void di() {
System.out.println(beanA);
}
}
但是@Autowired在這個測試代碼中與具體類一起工作。
爲什麼@Autowired在應用程序和測試中的工作方式不同?
我共享上面的代碼爲:
https://github.com/izeye/SpringTest
自動佈線接口在兩者都可以正常工作。 我的問題是爲什麼只有在測試應用程序上下文Autowired與具體類的作品,當豆註冊接口。 – 2014-11-07 01:23:12