zoukankan      html  css  js  c++  java
  • Spring Boot(1)

    Spring Boot 是Spring家族当中的一个全新框架 , 设计的目的是用来简化应用的初始搭建以及开发过程
    该框架使用了特定的方式进行配置 , 从而使开发人员不再需要定义样板化的配置


    Spring本身非常强大 , 但是缺点就是需要大量的XML配置用来完成大量的依赖管理

    Spring Boot的目标就是解决这方面的问题
    可以帮助开发者快速启动一个web容器 ( 相当于是将tomcat直接嵌入到项目当中 , 而省去了部署运行的过程 )
    它可以作为微服务的一个入门微框架

    Hello World

    现在尝试快速搭建一个使用SpringBoot运行的web项目

    创建maven项目

    创建一个普通的maven项目 , 添加spring-boot的依赖
    因为我们需要让spring-boot来运行一个web项目
    所以添加spring-boot-starter-web

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.5.3.RELEASE</version>
    </dependency>
    
    编写Controller
    @RestController
    public class TestController {
    	@RequestMapping("/")
    	public String home() {
    		return "hello";
    	}
    }
    

    这里的@RestController相当于是@Controller与@ResponseBody的组合
    也就是控制器方法的返回值就会直接作为HTTP请求的响应体内容
    ( 这个步骤与SpringMVC当中基本一致 )

    启动程序

    现在我们还需要一个程序的启动入口 , 也就是一个main方法

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

    @SpringBootApplication 是一个组合注解 , 相当于包含下列3个注解

    • @Configuration - 声明当前类是个配置类 , 相当于之前配置Spring所用的xml文件
    • @EnableAutoConfiguration - 作用是让SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置
    • @ComponentScan - 自动扫描包名下所有使用 @Component @Service @Repository @Controller 的类 , 并将其注册为bean

    注意 : 这里默认扫描的是同包下的类
    所以如果TestController与启动类不在同一个包下面 , 则不会生效

    现在运行程序 , 然后使用浏览器访问
    http://localhost:8080/
    就可以执行到控制器方法了 , 并且获得对应的响应

    不过在这里都是执行的默认配置 , 并没有进行任何定制 , 算是一个最简单的demo


    热部署

    直接使用上面的默认配置 , 在对程序执行修改之后 ( 哪怕是只修改了方法内部代码 , 没有改变类结构 ) , 是无法立即生效的

    为了开发方便 , 可以使用下面的方案

    热启动

    在pom.xml当中添加如下依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <version>1.5.4.RELEASE</version>
    </dependency>
    

    这里实现的其实不是真正的热部署
    这个jar包是作为一个spring-boot的开发工具的
    每次对代码有修改 , 都会去重新加载spring application的上下文
    相当于是自动重启程序

    热部署

    要实现真正的热部署 , 需要用到springloaded这个包
    但是并不是直接在项目当中引入
    而是添加到JVM的参数

    -javaagent:/Users/Sookie/Documents/apache-maven-3.5.0/mavenLib/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify
    

    在eclipse当中的设置

    即可实现对代码修改后实时生效


    与maven的配合

    使用Spring Boot Maven Plugin这个插件 , 可以实现用maven来运行或者打包spring boot程序

    在pom.xml当中添加该插件
    <build>
      ...
      <plugins>
        ...
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>1.5.4.RELEASE</version>
          <executions>
            <execution>
              <goals>
                <goal>repackage</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        ...
      </plugins>
      ...
    </build>
    
    使用maven运行该项目

    定位到项目目录 , 执行

    mvn spring-boot:run
    

    与在IDE当中直接运行主类效果是一样的

    使用maven进行打包

    定位到项目目录 , 执行

    mvn package
    

    这时候会在target目录下生成一个jar包文件

    注意 : 如果不使用这个插件 , 打包也是可以成功的
    但是会因为缺少清单文件而无法运行
    也就是说这个插件会在打包过程中自动生成清单文件

    比如我这里打包生成的jar文件是spring_boot_demo-1.0-SNAPSHOT.jar
    执行下面的命令可以直接运行

    java -jar spring_boot_demo-1.0-SNAPSHOT.jar
    
  • 相关阅读:
    用户行为分析
    数据挖掘
    酒店舆情分析
    特征工程·TFIDF提取特征
    mongo.conf 配置信息
    Phpstudy(小皮面板) nginx 解析漏洞
    mvnw 是什么
    java8 函数式接口Function和BiFunction
    ArrayList去除重复元素 利用 HashSet
    idea svn提交 忽略.imi 以及.idea文件夹
  • 原文地址:https://www.cnblogs.com/programInit/p/7087544.html
Copyright © 2011-2022 走看看