2010-12-08 20 views
0

Je travaille actuellement sur un projet existant. Il utilise Struts 2 + Spring 2.5.struts 2 initialisation de la variable d'instance de classe action

Il y a une classe d'action, nous allons l'appeler ActionA.java, à l'intérieur duquel, il y a une variable d'instance qui est une interface de service, comme,

classe ActionA {

// Variables

protected ServiceAInterface serviceA;

// méthodes d'action, en utilisant des méthodes de service A

}

dans les définitions de fèves de ressort, il y a une définition, comme < bean id = "service A" class = "com.company.serviceAImplementationClass"/>

Je n'ai trouvé nulle part ailleurs lié à l'initialisation de la variable serviceA, et je me demandais vraiment, quelle partie trouve la classe d'implémentation correcte pour cette variable, et l'initialise?

Ça me dérange vraiment. Merci pour tout éclaircissement.

Jackie

+0

Je pense avoir trouvé la réponse. Une fois le plugin ressort-ressort mis en place, il a configuré les entretoises objectFactory au ressort. le câblage automatique par défaut est par nom, ce qui signifie qu'après initialisation de l'objet action, il va définir ses propriétés, en utilisant des beans printaniers, ayant le même identifiant bean que le nom de la propriété. as, http://struts.apache.org/2.x/docs/spring-plugin.html – lwpro2

Répondre

0

Une façon de définir le haricot de service comme

<bean id="serviceA" class="com.company.serviceAImplementationClass"/> 

<bean id="actionClassA" class="com.company.ActionA"> 
    <property name="serviceA" ref="serviceA"/> 
</bean> 

puis dans votre classe, écrire et poseur getter pour votre classe de service.

class ActionA{ 

//variables 

protected ServiceAInterface serviceA; 

//action methods, utilizing serviceA methods 

public ServiceAInterface getServiceA() { 
    return this.serviceA; 
} 

public void setServiceA(ServiceAInterface serviceA) 
    this.serviceA = serviceA; 
} 

} 

Ceci est. Le bean de classe de service sera initilisé au printemps lors du démarrage de l'application et sa référence sera assignée à votre classe d'action.

+0

pour les définitions de bean de classe d'action, même si vous ne configurez pas les propriétés, comme ci-dessous: tant que vous avez défini setter à l'intérieur de la classe d'action, et le nom de propriété même que les définitions de bean, comme" serviceA ". Cela fonctionne aussi. En fait, c'est mes questions. Quoi qu'il en soit, merci pour les commentaires de toute façon. Et j'ai trouvé la réponse moi-même. – lwpro2

+0

celui-ci peut être effectivement référencé depuis http://struts.apache.org/2.0.8/docs/spring-plugin.html. En outre, en utilisant le mode de débogage, j'ai découvert que la dépendance est seulement injectée dans le processus de l'action en cours d'exécution. – lwpro2