我有一个接口,服务实现了它。它有一些void方法。我使用的是springjavabean配置。但是由于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
}
如何在这里实现依赖项注入?
-
在AppConfig类上使用@Configuration注释,这样,该类上定义的所有bean都将加载到spring上下文中。
-
如果您在DummyClass上使用@Service annotation,则不需要声明@Bean annotation。因为您已经在对spring说要检测这个类以进行依赖项注入。另一方面,使用@Bean注释来指定类的实例化。通常,我会让@Bean到复杂的类中进行依赖项注入或覆盖配置。