SpringBoot(一)

222 阅读3分钟

SpringBoot思维导图 SpringBoot(一)思维导图

一、SpringBoot介绍
  1. Spring技术栈 包括但不限于Spring Boot、Spring Cloud、Spring Web Service、Spring Kafka等技术。官网:spring.io/projects
  2. Spring缘由 由于早期的J2EE开发配置较多、开发效率较低、流程部署复杂、集成第三方难度较大,因此出现了spring系列技术。 同时为了简化配置,出现了SpringBoot技术。随着业务的发展,为了解决分布式应用,出现SpringCloud技术。
  3. SpringBoot优点
    自动配置、简化开发、提高效率; 无需配置xml,可以使用写好的api直接应用; 可以快速创建spring项目,容易与第三方主流框架集成; 准生产环境的运行时应用监控; 与云计算的天然集成。
  4. SpringBoot缺点 由于SpringBoot是基于spring框架进行再封装,需要掌握spring,更难理解。
  5. SpringBoot特点 简化Spring应用开发、约定大于配置、去繁从简。
二、热部署
  1. 缘由 SpringBoot如果不加热部署,当项目发生任何修改之后,必须重启Application类才能生效,比较麻烦。 使用热部署之后,当项目任何类发生修改,可以马上通过JVM类加载的方式,加载到最新的虚拟机中,不需要重启了。
  2. 热部署步骤 修改pom.xml,增加热部署依赖和maven插件。
    <!-- 热部署依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <!-- 当optional为true时,热部署生效 -->
        <optional>true</optional>
    </dependency><plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    
三、简单HelloWorld

浏览器发送 /hello 请求,服务器接收请求,然后响应 HelloWorld 字符串。

  1. 创建maven工程 Create New Project-->Maven-->第一次创建要绑定jdk环境-->next

  2. 导入spring boot相关依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
  3. 编写主程序类 HelloWorldApplication

    package springboot.awen;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    /**
    * @SpringBootApplication: 主程序类
    * @author awen
    * /
    @SpringBootApplication
    public class HelloWorldApplication {
    	public static void main(String[] args) {
    		// 启动SpringBoot应用
    		SpringApplication.run(HelloWorldApplication.class, args);
    	}
    }
    
  4. 编写Controller

    package springboot.awen.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    @Controller
    public class HelloController {
    	@ResponseBody
    	@RequestMapping("/hello")
    	public String hello(){
    		return "HelloWorld";
    	}
    }
    
  5. 运行主程序并测试 右击Run As --> Java Application。 浏览器地址栏请求localhost:8080/hello,不需要加项目名。

四、深入探究spring boot
  1. 主程序类
  • @SpringBootApplication:如果某个类加上这个注解,则说明这个类是spring boot启动类,通过运行这个main方法来启动该项目。
  • @SpringBootConfiguration:SpringBoot的配置类
    • @Configuration:表明这个类是配置类
  • @ EnableAutoConfiguration:开启自动配置功能
    • @AutoConfigurationPackage:自动配置包
      • @ Import(EnableAutoConfigurationImportSelector.class):Spring底层注解,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class将SpringBootApplication主配置类所在包及其所有子包里的所有组件扫描到spring容器。
    • @Import(EnableAutoConfigurationImportSelector.class):给容器中导入组件
      • EnableAutoConfigurationImportSelector:导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回,这些组件就会添加到容器中,会导入很多自动配置类XXXAutoConfiguration。
  1. pom.xml文件 父项目
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.9.RELEASE</version>
    </parent>
    
    spring-boot-starter-parent里的父项目: 真正管理spring boot应用的所有依赖版本,我们导入依赖默认不需要写版本。
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-dependencies</artifactId>
    	<version>1.5.9.RELEASE</version>
    	<relativePath>../../spring-boot-dependencies</relativePath>
    </parent>
    
    导入依赖
    <dependencies>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    </dependencies>
    
  • spring-boot-starter:场景启动器。spring boot会将相关功能场景抽取出来,形成一个个starter,只要引用其中某一个场景依赖,则这个相关的所有依赖都可以导进来。
    • activemq:JMS消息服务
    • ​amqp:高级消息队列
    • aop:切面
    • jqa:数据库访问
    • redis:数据库访问缓存​​
    • mail:邮件开发
    • web:web开发​ - spring-boot-starter-web:导入web模块正常运行所依赖的组件
五、SpringBoot项目目录结构

springboot目录结构 static:存放css、js、images等静态资源; templates:存放模板页面;(Spring boot默认不支持JSP页面)(默认使用嵌入式的tomcat) application.properties:存放配置;(可以修改默认配置)