我有一个接口(interface)并且服务实现了它。它有一些无效的方法。
我正在使用 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
}
这里如何实现依赖注入(inject)?
最佳答案
在 AppConfig 类上使用 @Configuration 注解,这样该类上定义的所有 Bean 都将加载到 Spring 上下文中。
如果你在DummyClass上使用@Service注解,你不需要声明@Bean注解,因为你已经让spring检测这个类进行依赖注入(inject)。另一方面使用@Bean注解来指定类的实例化。通常我让 @Bean 来复杂的类进行依赖注入(inject)或覆盖配置。
关于java - 如何在具有 void 方法的类中使用 spring @autowired 注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54237698/