Pregunta

¿Cómo habilitar la anotación @Required en Java (primavera 3.1)? No en un XML, sino a través de Java. ¿También bajo qué anotación puse esta habilitación? Bajo @Feature (en @FutureConfiguration o @Bean (en @Configuration)?

Editar:

    @Feature
    public MvcAnnotationDriven annotationDriven(ConversionService conversionService) {
        return new MvcAnnotationDriven().conversionService(conversionService)
                .argumentResolvers(new CustomArgumentResolver());
    }

¿Esto permite todas las anotaciones?

¿Fue útil?

Solución

La respuesta de @Anubhava funciona, pero ha hecho referencia al manual de Spring 2.0, que tiene 5 años.

En la configuración XML, Spring 3.x tiene un enfoque más elegante: <context:annotation-config/>. Esto también habilitó un montón de características que probablemente desee, mientras que RequiredAnnotationBeanPostProcessor Solo habilita algunos.

Ver Manual de primavera 3.x.

Si estás usando @Bean-Sistema de estilo, luego anotaciones como @Required debería ya estar habilitado, ya que así es como @Bean obras. Sin embargo, es posible que este sea un error: la primavera 3.1 todavía está en beta temprana, y es probable que se rompan grandes trozos.

A menos que realmente sepa lo que está haciendo, le recomiendo que se quede a 3.0.x.

Otros consejos

Desde el Manual de primavera:

Hay una última pieza (pequeña y pequeña) pieza de configuración de resorte que se requiere para "activar" este comportamiento. Simplemente anotar las propiedades de 'setter' de sus clases no es suficiente para obtener este comportamiento. Debe habilitar un componente que conozca la anotación @Required y que pueda procesarlo adecuadamente.

Este componente es la clase requerida de ytationBeanPostProcessor. Esta es una implementación especial de BeanPostProcessor que es @requerido y proporciona la lógica 'explotar si esta propiedad requerida no se ha establecido'. Es muy fácil de configurar; Simplemente deje caer la siguiente definición de frijoles en su configuración de Spring XML.

<bean class=
"org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

Por favor, compruebe: http://static.springsource.org/spring/docs/2.0.x/reference/metadata.html

Usar AnnotationConfigApplicationContext Si no quieres usar XML:

Contexto de aplicación independiente, aceptando clases anotadas como entrada, en particular @Configuration-clases anotadas, pero también simples @Componentsy clases compatibles con JSR-330 que usan anotaciones Javax.inject. Permite registrar clases uno por uno (register(java.lang.Class...)) así como para classpath scanning (scan(java.lang.String...)).

En el caso de múltiples clases de configuración, los métodos de Bean definidos en clases posteriores anularán las definidas en clases anteriores. Esto se puede aprovechar para anular deliberadamente ciertas definiciones de frijoles a través de una clase de configuración adicional.

Código de muestra:

ConfigurableApplicationContext applicationContext =
new AnnotationConfigApplicationContext(
    "com.mycompany.package1",
    "com.mycompany.package2",
    "com.mycompany.package3"
    // etc.
);
applicationContext.refresh();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top