如果一个十来年的ssh项目想使用springboot的便捷性,但又不想从零开始,那么就让我们开始迁移吧。
在pom文件添加springboot 依赖
创建application 启动类
迁移web.xml
web.xml文件中定义了filter, struts2等等一堆filter, 这时我们需要做的一件事是在springboot中使我们的filter, struts2 能正常work。 这样就不需要我们改变项目中已经定义好的大量的action、controller层代码.
//声明当前类为一个配置类
@Configuration
//自动扫描包路径
@ComponentScan({"com.demo.action", "com.demo.util","com.demo.security"})
//引入之前已经存在的配置文件
@ImportResource(locations = {
"classpath:applicationContext-configuration.xml",
"classpath:applicationContext-orm.xml",
"classpath:applicationContext-business.xml",
"classpath:ApplicationContext-RabbitMQ.xml",
"classpath:applicationContext-security-authorization.xml",
})
public class ApplicationConfig {
private static final Logger log = LoggerFactory.getLogger(ApplicationConfig.class);
private LogRequestFilter logRequestFilter = new LogRequestFilter();
private StrutsPrepareAndExecuteFilter strutsPrepareAndExecuteFilter = new StrutsPrepareAndExecuteFilter(); //springboot启动时初始化struts2拦截器
@Bean
@Order(1)
public FilterRegistrationBean loginFilter() {
/*
* * LoginFilter
* com.demo.servlet.LoginFilter
*
* * LoginFilter
* /login/*
* /login.html
*
*/
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new LoginFilter());//注册拦截filter
registrationBean.addUrlPatterns("/login/*", "/login.html");//拦截路径
return registrationBean;
}
@Bean
@Order(2)
public FilterRegistrationBean strutsPrepareAndExecuteFilter() {
/*
* * struts2
* org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
*
* * struts2
* /*
*
* * struts2
* FORWARD
*
*/
log.debug("Instantiating StrutsPrepareAndExecuteFilter");
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(strutsPrepareAndExecuteFilter);//注册Struts2拦截器
registrationBean.setName("StrutsPrepareAndExecuteFilter");
registrationBean.addUrlPatterns("/*");//默认拦截所有请求
return registrationBean;
}
}
通过以上code, 我们已经将web.xml的配置完全迁移,这时我们通过springboot 已经可以开始启动项目了。
当然,在springboot中使用Struts2是不合理的也是官方不支持使用的, 后续的工作我们可以逐步整合hiberante, springsecurity,最后将Struts2替换成springmvc. 慢慢减少我们的配置文件。
(1)FilterRegistrationBean: spring 对filter 拦截器的一个注册类, 自带setorder方法, [email protected]�动和拦截的优先级。
(2)@Order 控制filter的启动和拦截的优先级。
(3)@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
(4) StrutsPrepareAndExecuteFilter 这个类就不多说了,相信大部分使用struts2的小伙伴都知道这是struts2的启动类
(5) @ImportResource等同于xml配置。参考:https://blog.csdn.net/jiaobuchong/article/details/50530027
(6)@Configuration 用于定义配置类,可替换xml配置文件,[email protected]法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
参考: https://blog.csdn.net/qq_35981283/article/details/77826537
https://www.jianshu.com/p/3bd687e9d1e7
springboot 系列教程:
https://blog.csdn.net/softwave/article/details/77152373