Java 如何使方法签名中的spring托管类成为可选的?
在注入的服务是可选的情况下,如何定义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
@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
方法,并在此处执行