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

时间:2019-01-17 14:07:35

标签: java spring

我有一个接口,服务可以实现它。它有一些无效的方法。 我正在使用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
}

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

1 个答案:

答案 0 :(得分:1)

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

  2. 如果在DummyClass上使用@Service批注,则无需声明@Bean批注,因为您已经在说要弹跳以检测此类进行依赖项注入。另一方面,使用@Bean批注指定类的实例化。通常,我让@Bean进入复杂的类以进行依赖项注入或覆盖配置。