Spring JavaConfig, bean benutzerdefinierte Bereiche und Anmerkungen
Habe ich ein problem zu lösen:
1) unser Projekt mit Spring JavaConfig-Ansatz (also keine xml-Dateien)
2.) brauche ich zum erstellen von benutzerdefinierten Rahmen, beispielsweise in xml sieht wie folgt aus:
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry key="workflow">
<bean
class="com.amazonaws.services.simpleworkflow.flow.spring.WorkflowScope" />
</entry>
</map>
</property>
Habe ich es herausgefunden mit JavaConfig es sieht ungefähr so aus:
@Bean
public CustomScopeConfigurer customScope () {
CustomScopeConfigurer configurer = new CustomScopeConfigurer ();
Map<String, Object> workflowScope = new HashMap<String, Object>();
workflowScope.put("workflow", new WorkflowScope ());
configurer.setScopes(workflowScope);
return configurer;
}
Korrigiert mich wenn ich falsch mit meiner Annahme.
3) muss ich zum kommentieren meine Klasse etwas wie @Component (scope="workflow")
wieder xml-Konfiguration würde wie folgt Aussehen:
<bean id="activitiesClient" class="aws.flow.sample.MyActivitiesClientImpl" scope="workflow"/>
Also im Grunde die Frage - bin ich im Recht mit meiner Annahme auf die Verwendung von @ - Komponente (scope="workflow") oder es wird erwartet, dass in irgendeiner anderen Art und Weise?
Dank
- Ich habe gerade die Warnung
@Bean method getWorkflowScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues.
Nur zur info, deine Methode sollte Lesen@
Bean public static CustomScopeConfigurer
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Verwendung von annotation
@Scope
. Wie diese:Es ist auch möglich, erstellen Sie benutzerdefinierte Bereichsqualifizierer:
und verwenden Sie es auf diese Weise:
@Bean
und@Scope("workflow")
/@WorkflowScoped
in eine configuration-Klasse.Stand ich vor einer ähnlichen situation in meinem Projekt finden Sie unter hier.
Im wesentlichen, müssen Sie passieren die
WorkflowScope
Instanz der Klasse als argument in dercustomScope()
Methode und verwenden Sie es, andernfalls wird es nicht funktionieren: