现有前面迁移到Spring-boot

Posted study_well_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现有前面迁移到Spring-boot相关的知识,希望对你有一定的参考价值。

  做为一个刚转java不到两个月的.net 程序员,第一个拿到的任务就是把一个以前的eclipse项目迁移到spring-boot,我的内心是崩溃的。eclipse我都还用的不是很熟,spring也才是限于能看懂,对于那一大堆的配置文件更是,更是一脸懵逼,好吧,工作还是得做。记录下整个过程中踩到的各式各样的坑。

  第一步加了maven做项目构建,唉,都是现学现卖。在转换过程中出现了各种错误。

    a).net.sf.json-lib引用报错,解决方案是指定JDK版本

    

    b) spring配置的 xml文件一直报错:发现时xml中写的spring版本和实际maven安装的不一致,maven暗转的是spring-4.39,xml中写的是4.0,

    

    c)"Cannot change version of project facet Dynamic web module to 2.5",这个主要是两个地方版本不一致导致的,一个是web.xml

      

    另一个地方是主目录下.setting 文件夹下的“org.eclipse.wst.common.project.facet.core.xml”文件里面的jst.web的版本,这两个要保持一致

      

  中间还碰到过一个问题,忘了是啥,解决方案是添加spring-tx的依赖,怕又碰到

 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.7.RELEASE</version>
</dependency>  

 

下面是转springboot的基本步骤和踩到的坑

  1.修改配置文件,增加springboot的配置

  添加继承的parent

 
<!--继承spring boot的parent-->
<
parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent>
  <!--添加spring boot  maven 插件用做项目编译-->
   <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix></classpathPrefix>
                    <mainClass>com.seaskylight.kaow.Application</mainClass><!--指定启动文件-->
                </manifest>
            </archive>
        </configuration>
    </plugin>

  添加依赖

    <dependency>
            <groupId>org.springframework.boot</groupId><!--web项目需要的依赖-->
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
            <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId><!--单元测试需要的依赖-->
            <scope>test</scope>
        </dependency>

  2.编写Application,完成上述这些操作基本上就可以讲项目作为一个springboot项目进项启动了,当然了可能会报一大堆的错误。

@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication
public class Application {
      
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 整合mybatis到springboot

  1.添加依赖  

<!--springboot mybatis的依赖项-->
<dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.0.0</version>
</dependency>

  

<!--jdbc的驱动,这个是必须有的,不然会抛驱动不能加载的异--> 
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
</dependency>

  2.定义datasource ,sqlSessionFactory,这个需要定义到刚刚的Application中,修改Applicaiton文件  ,配置好数据库,项目应该是能够正常启动了

@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication
public class Application {
  
    
  //DataSource配置
    @Bean
    @ConfigurationProperties(prefix="spring.datasource")
    @Primary
    public DataSource dataSource() {
        //DataSource dataSource = new DataSource();
        return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
        //com.mchange.v2.c3p0.ComboPooledDataSource
        //return new org.apache.tomcat.jdbc.pool.DataSource();
    }
 
    //提供SqlSeesion
    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
 
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
 
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
 
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/com/seaskylight/kaow/dao/*.xml"));
 
        return sqlSessionFactoryBean.getObject();
    }
    
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

  这里的线程池用的是c3p0,需要添加对应的依赖,并且在springboot的配置文件中配置好参数  

<dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
</dependency>

  配置文件  

spring.datasource.jdbcUrl=jdbc:mysql://localhost:3306/zxtk?characterEncoding=UTF-8&amp;characterSetResults=UTF-8&amp;zeroDateTimeBehavior=convertToNull
spring.datasource.user=user
spring.datasource.password=password
spring.datasource.driverClass=com.mysql.jdbc.Driver
spring.datasource.initialPoolSize=5
spring.datasource.minPoolSize=5
spring.datasource.maxPoolSize=50
spring.datasource.maxIdleTime=600
spring.datasource.acquireIncrement=5
spring.datasource.acquireRetryDelay=1000
spring.datasource.acquireRetryAttempts=30
spring.datasource.checkoutTimeout=2000
spring.datasource.maxStatements=50
spring.datasource.idleConnectionTestPeriod=60
spring.datasource.preferredTestQuery=SELECT SYSDATE()
spring.datasource.numHelperThreads=3

 

  因为这个项目是个web项目,所以有一些静态资源。springboot默认的静态资源是放在/resources,/resources/static,等默认文件夹下的(还有几个忘记了),这里我是在resources下面建了个static文件夹,然后再将静态资源移动到改文件夹下。这样就能进行静态文件的访问。

  

 

 

 

      

 

以上是关于现有前面迁移到Spring-boot的主要内容,如果未能解决你的问题,请参考以下文章

将已有的spring app迁移到spring-boot,手动配置spring-boot?

替换或删除后台堆栈上现有片段的代码不起作用

使用迁移到 Worklight 6.3 的现有 6.0.2 代码连接到本地时未在 Worklight 6.3 中获得更新

iOS:将现有核心数据数据库迁移到 iCloud

将现有应用程序迁移到的好的 PHP 框架是啥?

使用spring-boot在多个数据库之间进行数据迁移