我有一个接口,服务可以实现它。它有一些无效的方法。
我正在使用spring java bean配置。但是由于void
方法而无法创建bean对象。如何处理此问题。
在阅读了一些博客后,我尝试使用@PostConstruct
代替@Bean
,但没有成功。
public interface MyInterface {
void someData(List<MyClass> list, String somedata);
}
@Service("myInterface")
public DummyClass implements MyInterface {
public void someData(List<MyClass> list, String somedata){
// my business logic
}
}
public AppConfig {
@Bean
public MyInterface myInterface {
return new DummyClass(); // but gives error void cannot return value
}
}
我的Junit看起来像这样
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
classes = {AppConfig.class},
loader = AnnotationConfigContextLoader.class
)
public class MyTest {
@Autowired
DummyClass dummyClass;
// If I don't use AppConfig and simply autowire then I get
"Error creating bean name, unsatisfied dependency
}
如何在这里实现依赖注入?
答案 0 :(得分:1)
在AppConfig类上使用@Configuration批注,所有在该类上定义的bean都将在spring上下文中加载。
如果在DummyClass上使用@Service批注,则无需声明@Bean批注,因为您已经在说要弹跳以检测此类进行依赖项注入。另一方面,使用@Bean批注指定类的实例化。通常,我让@Bean进入复杂的类以进行依赖项注入或覆盖配置。