Beispiel für die Integration von Federbeinen 2 + Feder
Laden Sie es herunter -Struts2-Spring-Integration-Example.zip
In diesem Tutorial wird die Integration zwischen Struts 2 und Spring gezeigt.
1. Projektstruktur
Hier ist die Projektordnerstruktur dieser Tutorials.
2. Federbeine 2 + Feder Plugin
Um Struts 2 und Spring zu integrieren, rufen Sie die Bibliothek "struts2-spring-plugin-xxx.jar" auf und fügen Sie sie in Ihren Projektklassenpfad ein.
pom.xml
org.apache.struts struts2-core 2.1.8 org.springframework spring 2.5.6 org.springframework spring-web 2.5.6 org.apache.struts struts2-spring-plugin 2.1.8
3. Frühlings-Zuhörer
Konfigurieren Sie den Spring-Listener "org.springframework.web.context.ContextLoaderListener" in der Dateiweb.xml.
web.xml
Struts 2 Web Application struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* org.springframework.web.context.ContextLoaderListener
3. Registrieren Sie Spring Bean
Registrieren Sie alle Spring's Beans in derapplicationContext.xml-Datei. Der Spring-Listener findet diese XML-Datei automatisch.
applicationContext.xml
UserBo.java
package com.example.user.bo; public interface UserBo{ public void printUser(); }
UserBoImpl.java
package com.example.user.bo.impl; import com.example.user.bo.UserBo; public class UserBoImpl implements UserBo{ public void printUser(){ System.out.println("printUser() is executed..."); } }
UserSpringAction.java
package com.example.user.action; import com.example.user.bo.UserBo; public class UserSpringAction{ //DI via Spring UserBo userBo; public UserBo getUserBo() { return userBo; } public void setUserBo(UserBo userBo) { this.userBo = userBo; } public String execute() throws Exception { userBo.printUser(); return "success"; } }
5. Struts.xml
Erklärt die ganze Beziehung hier.
pages/user.jsp pages/user.jsp
6. Demo
Jetzt sind alle Integrationsarbeiten für Struts 2 und Spring abgeschlossen. Im folgenden Anwendungsfall können Sie auf die Bean "userBo" der Feder zugreifen.
-
Fall 1: Lassen Sie Spring als Struts 2-Action-Klasse fungieren und greifen Sie auf die Spring-Bean zu.
-
Fall 2: Greifen Sie in der Struts 2-Aktionsklasse auf die Spring's Bean zu.
Fall 1
In diesem Beispiel fungiertuserSpringAction als Struts 2-Aktionsklasse, und Sie können dieuserBo-Bohne der Feder auf normale Spring-Weise DI.
//struts.xml//applicationContext.xml pages/user.jsp
Verwenden Sie die URLhttp://localhost:8080/Struts2Example/userSpringAction, um auf diese Aktion zuzugreifen
Fall 2
Standardmäßig aktiviert der Spring Listener „autowiring by matching the bean name“. Daher wird die Bean "userBo" des Frühlings automatisch übersetUserBo() an die UserAction übergeben. Siehe unten Struts 2 Action:
Die automatische Verdrahtungsfunktion der Feder kann inname (Standard),type,auto oderconstructor geändert werden. Möglicherweise müssen Sie dieseStruts 2 Spring plugin documentation konsultieren.
UserAction.java
package com.example.user.action; import com.example.user.bo.UserBo; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ //DI via Spring UserBo userBo; public UserBo getUserBo() { return userBo; } public void setUserBo(UserBo userBo) { this.userBo = userBo; } public String execute() throws Exception { userBo.printUser(); return SUCCESS; } }
Verwenden Sie die URLhttp://localhost:8080/Struts2Example/userAction, um auf diese Aktion zuzugreifen
WebApplicationContextUtils
Alternativ können Sie die generischeWebApplicationContextUtils-Klasse des Spring verwenden, um die Spring-Bean direkt abzurufen.
package com.example.user.action; import org.apache.struts2.ServletActionContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.example.user.bo.UserBo; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ public String execute() throws Exception { WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext( ServletActionContext.getServletContext() ); UserBo userBo1 = (UserBo)context.getBean("userBo"); userBo1.printUser(); return SUCCESS; } }
Stellen Sie sicher, dass Sie den vollständigen Quellcode des Projekts für die Praxis herunterladen.