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.