springboot初体验

第一个springboot项目

1.图形化方式 ( http://start.spring.io/ )

    不再阐述

2.命令行的方式 (Maven创建)

执行下面的命令:

mvn archetype:generate -DgroupId=com.gupao -DartifactId=first-spring-boot-app -Dversion=1.0.0

然后打开此生成的工程,在工程的 pom.xml文件当中添加下面的依赖

先在头部的创建一个 parent标签,写上下面的内容:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
  </parent>

然后再添加一个 maven的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>


构建多模块的web应用

1.修改主工程类型 <packaging>jar</packaging> 替换成 <packaging>pom</packaging>

2.新建web工程,将遗留代码遗留到 web 的java目录下。

3.再从web工程独立出 model 工程

4.将web工程依赖 model 工程

5.重复步骤3,独立persistence

6.再从 persistence 中添加  model 的依赖

7.最终的依赖关系 web-->persistence-->model

 互相依赖的 springboot maven 项目如下地址

https://github.com/q907364606/first-springboot-app


构建可执行的 jar 或者是 war

web-1.0.0-SNAPSHOT.jar 当中没有主清单属性?

需要一个springboot的插件

jar的规范里面,有一个 Manifest.MF  里面有一个  Main-class 的属性:

API : Mainfest#getAttribute


在编写的程序 web 模块下的 pom.xml文件中增加下面的依赖:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


使用下面的命令打包项目:

mvn -Dmaven.test.skip -U clean package

打包显示成功了一个  web-1.0.0-SNAPSHOT.jar  为名字的 jar 文件

然后执行

explorer .


除了通过jar或者 war启动的方式外,还有通过目录启动的方式

    目录启动的方式可以帮助解决过期的 jar 不支持 SpringBoot的新方式,比如老版本的 mybatis

        如果是jar包,启动的是 org.springframework.boot.loader.JarLauncher

        如果是war包,启动的是  org.springframework.boot.loader.WarLauncher

        

注意事项

    BOOT-INF 是 springBoot 1.4之后才开始有的

    当使用插件或者依赖的时候,如果版本是 Milestone的时候,需要增加

     

 <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

    在META-INF/MANIFEST.MF 里面有指定两个属性 

        Main.class   org.springframework.boot.loader.JarLauncher

        Start.class    com.gupao.App


在生成的 jar 包下运行以下java命令

jar -jar web-1.0.0-SNAPSHOT.jar

然后即可看到 成功运行 springboot的项目



注意除了 jar 或者 war 启动的方式,还有目录启动的方式

    1.目录启动方式,可以帮助解决过期的 jar 包不支持 springboot的新方式

            首先来到生成的jar包的解压目录(web-1.0.0-SNAPSHOT),  在这个目录下启动命令是:

            java org.springframework.boot.loader.JarLauncher  

            执行之后同样可以看到  springboot的启动界面


            如果是war 包,启动的是  org.springframwwork.boot.loader.WarLauncher

            从jar包切换成 war 包的打包方式

            1.修改 <packaging> 编程 war

            2.创建 webapp/WEB-INF  目录,(相对于  src/main  这个目录),然后再这个目录中增加一个   web.xml  文件

                    注意步骤2  是为了绕过插件的限制。

                    还可以在要打包工程的  pom.xml文件当中的 plugins当中增加下面的依赖

<plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
使用  war 包启动的时候也是一样的方式 jar -jar web-1.0.0-SNAPSHOT.war


如果说想用 命令的方式启动多个项目,可以这样做,执行下面的命令。

java -jar web-1.0.0-SNAPSHOT.war --server.port=0           指定 --server.port 意思是让主机用随机的一个端口启动,避免默认8080 端口的冲突



除此之外,项目还可以使用  maven 的启动方式:

mvn -Dmaven.test.skip -U clean install          这句话是编译工程并且将项目打成  jar  包(编译的时候要在父工程所在的pom.xml文件夹下进行编译)

mvn spring-boot:run          运行的时候需要在 springApplication.run( args );  这个方法所在的文件夹下运行方法,本案例中需要来到父工程目录下的web目录当中。

mvn spring-boot:run -Dserver.contextPath=/first-app




问答:

webFluxConfiguration 里面的映射路径和 Controller 中的路径有什么区别吗?

答:基本上没有区别的,注意不重复定义,或者 URL 语意有重复

问:

    WebFlux 不是跟 mvc 不能一起吗,怎么一起启动了?

答:spring-boot-starter-webmvc 和 spring-boot-starter-webflux可以放在同一个应用,可以webflux不会工作,默认使用 webmvc,webflux不会被采用。 实际上 webflux是兼容Annotation驱动,比如 @RequestMapping 


问:  webflux 可以支持 restfull吗?

   答:可以支持。

    

问: spring的老项目怎么迁移到 springboot当中呢?

   答: 老的 xml方式采用 @ImportResource 导入。


问:Tomcat如何调优:

  答:通过 application.properties 调整配置参数。

        第二种通过接口回调。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值