ssh框架使用springBoot升级迁移替换Struts2

如果一个十来年的ssh项目想使用springboot的便捷性,但又不想从零开始,那么就让我们开始迁移吧。

  1. 在pom文件添加springboot 依赖
  2. 创建application 启动类
  3. 迁移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() {
    /*
     * <filter>
     * <filter-name>LoginFilter</filter-name>
     * <filter-class>com.demo.servlet.LoginFilter</filter-class>
     * </filter>
     * <filter-mapping>
     * <filter-name>LoginFilter</filter-name>
     * <url-pattern>/login/*</url-pattern>
     * <url-pattern>/login.html</url-pattern>
     * </filter-mapping>
     */
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new LoginFilter());//注册拦截filter
        registrationBean.addUrlPatterns("/login/*", "/login.html");//拦截路径
        return registrationBean;
    }
    @Bean
    @Order(2)
    public FilterRegistrationBean strutsPrepareAndExecuteFilter() {
        /*
     * <filter>
     * <filter-name>struts2</filter-name>
     * <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     * </filter>
     * <filter-mapping>
     * <filter-name>struts2</filter-name>
     * <url-pattern>/*</url-pattern>
     * </filter-mapping>
     * <filter-mapping>
     * <filter-name>struts2</filter-name>
     * <dispatcher>FORWARD</dispatcher>
     * </filter-mapping>
     */
        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方法, 我们也可以通过在方法前添加@order来控制filter的启动和拦截的优先级。
(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配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值