在SSH整合中,自己来初始化Spring。一个小白的自我记录
这样做不用Spring来管理Action。需要用到Service的时候就自己去获取,这只是一种方式。比较适用于XML的形式来开发项目,如果是用注解的方式开发项目就不用在意这种方式。
1.创建自己类,来简单管理Spring。
package com.ssh.util;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BeanFactory {
private static ClassPathXmlApplicationContext beanFactory = null;
public static void init(String path){
beanFactory = new ClassPathXmlApplicationContext(path);
}
private BeanFactory() {
}
public static Object getBeanFactory(String id) {
return beanFactory.getBean(id);
}
}
2.自己创建一个Servlet继承HttpServlet,用来初始化,也就是init方法。
package com.ssh.init;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.PropertyConfigurator;
import com.ssh.util.BeanFactory;
public class InitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InitServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
// 初始化方法,在这个init方法中,也可以加入比如log4j等,用于项目启动时初始化
public void init() throws ServletException {
// 启动时,初始化Spring.xml
BeanFactory.init("/spring.xml");
}
}
3.创建好servlet以后,就要去web.xml配置,启动时去加载我们自己建立的servlet。
<!-- 启动时初始化Spring用自己创建的方式(Servlet) -->
<servlet>
<servlet-name>myInitServlet</servlet-name>
<servlet-class>com.ssh.init.InitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在Action中获取Service的方式如下
如果在某个Service中使用其他的Service,也可这么使用,我主要是以XML形式来开发项目,这么获取Service对我来说省去了很多Sring.xml的配置。Spring.xml也就是bean.xml或者applicationcontext.xml。
package com.ssh.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ssh.model.User;
import com.ssh.service.impl.UserService;
import com.ssh.util.BeanFactory;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public String toSuccess() {
try {
// userService需要在Spring.xml中配置好。
UserService service = (UserService) BeanFactory.getBeanFactory("userService");
// 这个地方实际上是从页面中获取的值,在这只是一个演示。
User u = new User();
u.setUsername("username");
u.setPassword("password");
service.addUser(u);
return "success";
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
}
}