Domanda

Come abilitare l'annotazione @Required in Java (primavera 3.1)? Non in un XML, ma attraverso Java. Anche in quale annotazione ho messo questo abilitazione? Sotto @feature (in @FutureConFiguration o @Bean (in @Configuration)?

Modificare:

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

Questo consente tutte le annotazioni?

È stato utile?

Soluzione

@Anubhava La risposta funziona, ma ha fatto riferimento al manuale di primavera 2.0, che ha 5 anni.

In XML Config, Spring 3.x ha un approccio più elegante: <context:annotation-config/>. Ciò ha anche permesso a un altro mucchio di funzionalità che probabilmente vorrai, mentre RequiredAnnotationBeanPostProcessor ne consente solo alcuni.

Vedere Primavera 3.x Manuale.

Se stai usando @Bean-Style config, quindi annotazioni come @Required dovrebbe già essere abilitato, dato che è così @Bean lavori. Tuttavia, è possibile che questo sia un bug: la primavera 3.1 sia ancora nella prima beta, e è probabile che i grossi pezzi siano rotti.

A meno che tu non sappia davvero cosa stai facendo, ti consiglio vivamente di attenersi a 3.0.x.

Altri suggerimenti

Dal Manuale di primavera:

C'è un ultimo piccolo (piccolo, piccolo) configurazione a molla che è necessario per "accendere" questo comportamento. Semplicemente annotare le proprietà "setter" delle tue classi non è sufficiente per ottenere questo comportamento. È necessario abilitare un componente che è a conoscenza dell'annotazione @ReQued e che può elaborarlo in modo appropriato.

Questo componente è la classe di boscaiolazioni che richiede. Si tratta di un'implementazione speciale BeanPostProcessor che è @richiesto e in realtà fornisce la logica "Blow Up se questa proprietà richiesta non è stata impostata". È molto facile da configurare; Basta cadere la seguente definizione di fagioli nella configurazione XML Spring.

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

Si prega di controllare: http://static.springsource.org/spring/docs/2.0.x/reference/metadata.html

Uso AnnotationConfigApplicationContext Se non vuoi usare XML:

Contesto di applicazione autonoma, accettando le classi annotate come input - in particolare @Configuration-Azioni annotate, ma anche semplici @Componentse classi conformi a JSR-330 usando annotazioni Javax.inject. Consente la registrazione delle classi una per una (register(java.lang.Class...)) così come per la scansione del percorso di classe (scan(java.lang.String...)).

In caso di più classi di configurazione, i metodi di fagioli definiti nelle classi successive sovrascriveranno quelli definiti nelle classi precedenti. Questo può essere sfruttato per sovrascrivere deliberatamente alcune definizioni di fagioli tramite una classe di configurazione aggiuntiva.

Codice di esempio:

ConfigurableApplicationContext applicationContext =
new AnnotationConfigApplicationContext(
    "com.mycompany.package1",
    "com.mycompany.package2",
    "com.mycompany.package3"
    // etc.
);
applicationContext.refresh();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top