如何在具有void方法的类中使用spring@autowired注释



我有一个接口,服务实现了它。它有一些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
}

如何在这里实现依赖项注入?

  1. 在AppConfig类上使用@Configuration注释,这样,该类上定义的所有bean都将加载到spring上下文中。

  2. 如果您在DummyClass上使用@Service annotation,则不需要声明@Bean annotation。因为您已经在对spring说要检测这个类以进行依赖项注入。另一方面,使用@Bean注释来指定类的实例化。通常,我会让@Bean到复杂的类中进行依赖项注入或覆盖配置。

相关内容

  • 没有找到相关文章

最新更新