Anotación desaprobación Tipo Obligatorio de primavera

user7294900:

Primavera de anotación Tipo Obligatorio se marca como obsoleta

Obsoleto. como de 5,1, en favor del uso de la inyección de constructor para los ajustes necesarios (o una implementación personalizada InitializingBean)

Lo mismo para relevante RequiredAnnotationBeanPostProcessor

Sin embargo, no está claro cuál es la sustitución, parece que debería estar disponible.

Este cambio se impedirnos marcando método como se requiere a menos que sea parte del método constructor? para evitar excepciones inesperadas en la creación de la clase?

qutax:

Hay tres formas de inyectar a través de un grano de anotación:

El campo de la inyección

@Autowired
private FooService fooService;

inyección de setter

private FooService fooService;

@Autowired
public void setFooService(FooService fooService) {
    this.fooService = fooService
}

Inyección de constructor (este es el mencionado reemplazo)

private final FooService fooService;

@Autowired
public MyComponent(FooService fooService) {
    this.fooService = fooService;
}

Como se puede ver, la única manera de declarar su servicio finales mediante el uso de la inyección de constructor, que sustituye a la @Requiredanotación ya que obliga al usuario de su clase para crear una instancia con los servicios requeridos. El usuario no tiene por qué ser la primavera, podría ser una prueba de unidad simple también.

Debe utilizar la inyección de constructor para las dependencias obligatorias y incubadora inyecciones de dependencias opcionales en lugar de la inyección campo. Algunas de las razones:

  • Esto hace que sea claro para todos los que se requieren dependencias
  • Esto hace más fácil la prueba
  • Usted puede hacer sus objetos inmutables

Otras lecturas:

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=172454&siteId=1
Recomendado
Clasificación