小言_互联网的博客

把activiti的springmvc工程转为springboot

368人阅读  评论(0)

思路:直接在原工程改,风险大而且费时,所以选择建个新的springboot工程,把原工程文件挪过来。【activiti版本是5.22】

  1. 首先创建springboot工程,这儿就在不赘述了,网上很多建springboot的文章,按步骤来做就好,主类不要放在java下面,新建包放在包的顶层即可,不然会提示

Spring Boot Application in default package

建好后新建webapp目录,具体参考:springboot工程创建webapp目录

  1. 建好之后,把java类直接挪过来,配置文件放在resources下面,楼主天真的以为jsp页面(也就是activiti设计器)放在static或者public等这种springboot用来放静态资源的路径下就可以,可是怎么都不行,jsp必须在webapp下面,保持同springmvc一样结构。
  2. 主类排除掉spring Security,如下图:
  3. 加视图解析器,两种方式,代码与配置文件
@Configuration
public class ViewResolverConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    /**
     * 配置视图解析器
     *
     * @return
     */
    @Bean
    public InternalResourceViewResolver configureInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setOrder(0);
        resolver.setContentType("text/html;charset=UTF-8");
        return resolver;
    }

或者

spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp

  1. pom中加入依赖
 		<dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

springboot内置的tomcat不行,真不知道为什么,感觉和activiti版本太低有关
6. 扫描activiti自带的service,springboot是从启动类所在包开始,扫描当前包及其子包下的所有文件,不包含jar中,所以要单独扫描。
7. 继承SpringBootServletInitializer
具体原因参考:SpringBootServletInitializer
7. 如果你的项目没有jsp,只是纯html,那就不用这么费劲了,把静态文件放在resources下面就行了,然后指定静态文件路径和解析路径,如下:

@Configuration
public abstract class StaticResourceConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
    }
}

或者

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/static/

static-path-pattern的意思是静态资源怎么去访问,static-locations的意思是你的静态资源放在哪,假如在static下有个a.png,可以这样访问:http://localhost:8080/项目的ContextPath/a.png
9. 期间还遇到了很多冲突和版本问题,可适当降低或者升高jar的版本就能解决,比如

java.lang.NoClassDefFoundError: org/hibernate/boot/model/naming/PhysicalNamingStrategy

这是因为hibernatete版本太低了。
10. 有什么疑问可以留言哈。


转载:https://blog.csdn.net/zpfzly/article/details/105500815
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场