Java 如何使方法签名中的spring托管类成为可选的?

Java 如何使方法签名中的spring托管类成为可选的?,java,spring,Java,Spring,在注入的服务是可选的情况下,如何定义spring托管方法签名 以下内容当然不起作用,因为方法签名中不允许使用@Autowired注释。但这就是我的意图 @Bean public MyService myService(@Autowired(required = false) OptionalService optional) { MyService service = new MyService(); //configure service if optional servi

在注入的服务是可选的情况下,如何定义spring托管方法签名

以下内容当然不起作用,因为方法签名中不允许使用
@Autowired
注释。但这就是我的意图

@Bean
public MyService myService(@Autowired(required = false) OptionalService optional) {
     MyService service = new MyService();
     //configure service if optional service is supplied
     return service; 
}

您不应该在方法中使用@Bean,而应该在
@Service
中声明您的类
MyService
,并使用Spring配置对其进行扫描。然后,您可以使用
@Autowired(required=false)
创建一个类型为
OptionalService
的字段。 您的服务应如下所示:

@Service
public class Myservice {

  @Autowired(required=false)
  private OptionalService optional;

}

然后,如果您需要在Spring注入optionalService后执行某项操作(或者不需要执行该操作),您可以让您的服务实现
初始化Bean
及其
afterPropertiesSet
方法,并在此处执行该操作。

您不应该使用@Bean with method,而应该使用
@service
声明您的类
MyService
,并使用Spring配置扫描它。然后,您可以使用
@Autowired(required=false)
创建一个类型为
OptionalService
的字段。 您的服务应如下所示:

@Service
public class Myservice {

  @Autowired(required=false)
  private OptionalService optional;

}
然后,如果您需要在Spring注入optionalService后执行某些操作(或者不需要),您可以让您的服务实现
InitializingBean
及其
AfterPropertieSet
方法,并在此处执行