基于maven把struts2项目升级为SpringBoot2.0+MybatisPlus项目

基于maven把struts2项目升级为SpringBoot2.0+MybatisPlus项目

修改pom

1.升级spring全家桶到5.0以上(spring-web,spring-webmvc,spring-tx,spring-jdbc,spring-expression,spring-core,spring-context-support,spring-context,spring-beans,spring-aspects,spring-aop)等
2.引入SpringBoot,MybatisPlus

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>${springboot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${springboot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${springboot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <version>${springboot.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>${springboot.version}</version>
            </dependency>
             <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>${mybatis-plus}</version>
            </dependency>

3.如果要用SpringBoot启动类访问jsp页面,并把jsp放到SpringBoot配置的static-path-pattern路径下,需要添加以下jar,tomcat的war包启动,则不需要修改jsp路径

			<dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <version>9.0.58</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>9.0.58</version>
            </dependency>

添加SpringBoot配置文件

1.添加application.yml到web模块的resources目录下,allow-bean-definition-overriding: true必须添加

server:
  port: 8080
  servlet:
    context-path: /test
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
spring:
  mvc:
    view:
      prefix: /WEB-INF/
      suffix: .jsp
    static-path-pattern: /static/
  jmx:
    default-domain: test
  servlet:
    multipart:
      max-file-size: 2048MB
      max-request-size: 2048MB
  main:
      allow-bean-definition-overriding: true

2.添加SpringBootApplicationConfig.java到web模块的项目包路径下, 目的是引入struts原有的配置,如项目有多个拦截器,可依次用@Bean引入,原有的拦截器可到web.xml文件查看

package net.firstelite.bicp.web.config;

import net.firstelite.bicp.web.LoginCheckFilter;
import net.firstelite.bicp.web.filter.EncodeFilter;
import org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.core.annotation.Order;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

/**
 * @Author: Larry
 * @Date: 2022/3/8 15:14
 */
@Configuration
//自动扫描包路径
@ComponentScan({"net.firstelite.*"})
//引入之前已经存在的struts配置文件
@ImportResource(locations = {
        "classpath:spring/spring-context-bundle.xml",
        "classpath:struts.xml"
})
public class SpringBootApplicationConfig {
    private StrutsPrepareAndExecuteFilter strutsPrepareAndExecuteFilter = new StrutsPrepareAndExecuteFilter(); //springboot启动时初始化struts2拦截器
    @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        resolver.setOrder(0);
        return resolver;
    }
    @Bean
    @Order(1)
    public FilterRegistrationBean loginCheckFilter() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new LoginCheckFilter());//注册登陆拦截filter
        registrationBean.addUrlPatterns("/*");//拦截路径
        return registrationBean;
    }

    @Bean
    @Order(2)
    public FilterRegistrationBean encodeFilter() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new EncodeFilter());//注册拦截filter
        registrationBean.addUrlPatterns("/*");//拦截路径
        return registrationBean;
    }

    @Bean
    @Order(3)
    public FilterRegistrationBean strutsPrepareAndExecuteFilter() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(strutsPrepareAndExecuteFilter);//注册Struts2拦截器
        registrationBean.setName("StrutsPrepareAndExecuteFilter");
        registrationBean.addUrlPatterns("/*");//默认拦截所有请求
        return registrationBean;
    }

}

3.数据库配置和redis额外配置一套, 因为旧的service、dao包名规则和新的不一样,按SpringBoot一般的配置方法即可
4.修改struts.xml,重要
在struts.xml中添加以下配置,交由spring管理

	<!-- 表示struts的工厂类交给Spring实例 -->
	<constant name="struts.objectFactory" value="spring"></constant>
	<!--
		SpringBoot集成struts2这个必须要配置
		如果这个没有配置就算运行不报错但是Action还是访问不了
	-->
	<constant name="struts.convention.exclude.parentClassLoader" value="false"></constant>

5.添加SpringBoot启动类,在/webapp/WEB-INF/目录中删除web.xml文件,原web.xml中的监听器都配置到了第2步的SpringBootApplicationConfig.java中

package net.firstelite.bicp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @Author: Larry
 * @Date: 2022/3/7 15:20
 */
@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(TestApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误通常是由于配置问题引起的。在Spring Boot中使用MyBatis Plus时,你需要确保正确配置了SqlSessionFactory或SqlSessionTemplate。 首先,确认你的应用程序中是否存在配置文件(如application.properties或application.yml)。在配置文件中,你需要指定MyBatis Plus的相关配置项,包括数据库连接信息和MyBatis的配置文件路径。 下面是一个示例的application.properties配置文件: ``` # 数据库连接信息 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver # MyBatis Plus配置 mybatis.type-aliases-package=com.example.domain mybatis.mapper-locations=classpath:mapper/*.xml ``` 请确保以上配置中的数据库连接信息正确,并且mapper-locations属性指定了正确的XML映射文件路径。 如果你已经正确配置了以上内容,但仍然遇到该错误,可能是因为你没有正确引入MyBatis Plus的依赖。请确保在你的pom.xml(Maven)或build.gradle(Gradle)中添加了正确的依赖项。 例如,如果你使用Maven构建项目,你需要在pom.xml中添加以下依赖项: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> ``` 请替换“最新版本”为你希望使用的MyBatis Plus版本。 完成以上步骤后,重新启动你的应用程序,该错误应该会被解决。如果问题仍然存在,请检查日志文件以获取更详细的错误信息,以便进一步调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值