SpringBoot入门教程(一) SpringBoot入门

摘要:
1、 SpringBoot简介SpringBoot是整个Spring技术堆栈的集成,以简化Spring应用程序的开发。惯例比配置更重要。通过消除复杂性和简化,JUSTRUN可以创建一个独立的产品级应用程序。背景:繁重的J2EE开发、各种配置、底层开发效率、复杂的部署过程和第三方技术集成都很困难。解决方案:“弹簧家庭桶”时代。春靴-->J2EE一站式解决方案

一、SpringBoot简介

  SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一个独立的,产品级别的应用。

  背景:

    J2EE笨重的开发、繁多的配置、底下的开发效率、复杂的部署流程、第三方技术集成难度大。

  解决:

    "Spring全家桶"时代。

    Spring Boot ——> J2EE一站式解决方案

    Spring Cloud ——>分布式整体解决问题

  优点:

    • 快速创建独立运行的Spring项目以及与主流框架集成
    • 嵌入的Tomcat,无需打包成WAR包
    • starters自动依赖与版本控制
    • 大量自动配置,简化开发,也可修改默认值
    • 无需配置xml,无代码生成,开箱即用
    • 准生产环境的运行时应用监控
    • 与云计算天然集成

二、微服务

  2014年,martin fowler

  微服务:一种架构风格。一个应用应该是一组小型服务,可以通过HTTP的方式进行互通;每一个功能元素最终都是一个可替换和独立升级的软件单元

  单体应用:All in one

SpringBoot入门教程(一) SpringBoot入门第1张

SpringBoot入门教程(一) SpringBoot入门第2张

三、环境配置

  环境约束:

  -jdk1.8:Spring Boot 建议jdk1.7以上;java -version   java version "1.8.0_131"

  -maven3.x:maven3.3以上版本;Apache Maven 3.6.1

  查询方法:

SpringBoot入门教程(一) SpringBoot入门第3张

 SpringBoot入门教程(一) SpringBoot入门第4张

SpringBoot入门教程(一) SpringBoot入门第5张

  -IDEA

  -SpringBoot 1.5.9版本(稳定版本)

一、IDEA配置

 SpringBoot入门教程(一) SpringBoot入门第6张

 SpringBoot入门教程(一) SpringBoot入门第7张

 四、SpringBoot HelloWorld

  一个功能:浏览器发送hello请求,服务器接收请求并相应,响应Hello World 字符串;

1、创建一个maven工程;(jar)

 SpringBoot入门教程(一) SpringBoot入门第8张

 SpringBoot入门教程(一) SpringBoot入门第9张

 SpringBoot入门教程(一) SpringBoot入门第10张

 SpringBoot入门教程(一) SpringBoot入门第11张

 SpringBoot入门教程(一) SpringBoot入门第12张

 SpringBoot入门教程(一) SpringBoot入门第13张

2、导入依赖springboot相关的依赖

 SpringBoot入门教程(一) SpringBoot入门第14张

 SpringBoot入门教程(一) SpringBoot入门第15张

 <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、编写一个主程序,启动springboot应用

 SpringBoot入门教程(一) SpringBoot入门第16张

 SpringBoot入门教程(一) SpringBoot入门第17张

类中代码如下:

package com.ge;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {
    //快捷键是psvm + Tab键
    public static void main(String[] args) {
        //spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

4、编写相关的Controller、Service

SpringBoot入门教程(一) SpringBoot入门第18张

 该类中代码如下

package com.ge.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Controller 处理请求
 */
@Controller
public class HelloController {
    /**
     * 接收来自浏览器的hello请求
     * @return
     */
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "HelloWorld!";
    }
}

5、运行主程序测试

SpringBoot入门教程(一) SpringBoot入门第19张

SpringBoot入门教程(一) SpringBoot入门第20张

6、简化项目部署

SpringBoot入门教程(一) SpringBoot入门第21张

SpringBoot入门教程(一) SpringBoot入门第22张

SpringBoot入门教程(一) SpringBoot入门第23张

SpringBoot入门教程(一) SpringBoot入门第24张

SpringBoot入门教程(一) SpringBoot入门第25张

SpringBoot入门教程(一) SpringBoot入门第26张

可以复制到我的虚拟机里,然后运行测试:(关于连接问题,可以查看这篇博客https://blog.csdn.net/qq_43054210/article/details/100942898

SpringBoot入门教程(一) SpringBoot入门第27张

SpringBoot入门教程(一) SpringBoot入门第28张

SpringBoot入门教程(一) SpringBoot入门第29张

 五、项目探究

1、POM文件

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

2、导入的依赖

<!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
spring-boot-starter-web

spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件

  Spring Boot 将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。

要什么功能就导入什么场景启动器

 2、主程序类,主入口类

/**
 * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {
    //快捷键是psvm + Tab键
    public static void main(String[] args) {
        //spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}




@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@java.lang.annotation.Inherited
@org.springframework.boot.SpringBootConfiguration
@org.springframework.boot.autoconfigure.EnableAutoConfiguration
@org.springframework.context.annotation.ComponentScan(excludeFilters = {@org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.context.TypeExcludeFilter.class}), @org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter.class})})
public @interface SpringBootApplication {
@org.springframework.core.annotation.AliasFor(annotation = org.springframework.boot.autoconfigure.EnableAutoConfiguration.class)
java.lang.Class<?>[] exclude() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.boot.autoconfigure.EnableAutoConfiguration.class)
java.lang.String[] excludeName() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.context.annotation.ComponentScan.class, attribute = "basePackages")
java.lang.String[] scanBasePackages() default {};

@org.springframework.core.annotation.AliasFor(annotation = org.springframework.context.annotation.ComponentScan.class, attribute = "basePackageClasses")
java.lang.Class<?>[] scanBasePackageClasses() default {};
 
@SpringBootApplication:SpringBoot应用标注在某个类上,说明这个类时SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

   @SpringBootConfiguration:Spring Boot得配置类;

    标注在某个类上,表示这是一个Spring Boot的配置类;

   @Configuration:配置类上来注解这个配置

     配置类 ----- 配置文件;配置类也是容器的一个组件;@Component

   @EnableAutoConfiguration:开启自动配置功能;以前我们要配置的东西,Spring Boot帮我们自动配置; @EnableAutoConfiguration

告诉SpingBoot开启自动配置功能;这样自动配置才能生效

@org.springframework.boot.autoconfigure.AutoConfigurationPackage
@org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

  @AutoConfigurationPackage:自动配置包

     @org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationPackages.Registrar.class}):spring的底层注解

     @import给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class指定

 六、使用Spring Initializer 快速创建Spring Boot项目 

 IDEA都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;

 SpringBoot入门教程(一) SpringBoot入门第30张

 SpringBoot入门教程(一) SpringBoot入门第31张

 SpringBoot入门教程(一) SpringBoot入门第32张

 SpringBoot入门教程(一) SpringBoot入门第33张

 SpringBoot入门教程(一) SpringBoot入门第34张

 SpringBoot入门教程(一) SpringBoot入门第35张

 SpringBoot入门教程(一) SpringBoot入门第36张

 默认生成的Spring Boot项目的特点:

  • 主程序已经生成好了,只需要编写自己的业务逻辑就好了
  • resources文件夹目录结构
    • static:保存所有的静态资源;js css img
    • templates:保存所有的模板页面;(Spring Boot 默认jar 包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemaker,thymeleaf);
    • application.properties:Spring Boot应用的配置文件;可以修改默认配置

 SpringBoot入门教程(一) SpringBoot入门第37张

 SpringBoot入门教程(一) SpringBoot入门第38张

 

免责声明:文章转载自《SpringBoot入门教程(一) SpringBoot入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSP中Session的使用什么是缓存下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring 事务管理详解

事务的概念   我们知道,在JavaEE的开发过程中,service方法用于处理主要的业务逻辑,而业务逻辑的处理往往伴随着对数据库的多个操作。以我们生活中常见的转账为例,service方法要实现将A账户转账到B账户的功能,则该方法内必定要有两个操作:先将A账户的金额减去要转账的数目,然后将B账户加上相应的金额数目。这两个操作必定要全部成功,方才表示本次转...

spring2.0-2.5-3.0变化[转]

spring2.0-2.5-3.0变化[转] 博客分类: JAVA spring   2.5的新特性Spring2.5rc1发布了,一直想知道它葫芦里卖什么药,以下是文档里的change.log 1. JDK版本: JDK至少要1.4.2以上,如果仍然打算使用1.3的话就请用2.0.6/2.0.7版本吧。 2. Jar包:SpringMVC 不...

Ubuntu——grub rescue 主引导修复

长期使用windows 和 ubuntu 人双系统,很可能遇到沉重的一个系统,或以其他方式加盟分区,导致系统重新启动时 : GRUB loading error:unknow filesystem grub rescue> 转载请注明出处:http://blog.csdn.net/jscese/article/details/36865449 一....

Spring Boot + thymeleaf 实现文件上传下载

参考博客:https://juejin.im/post/5a326dcaf265da431048685e 技术选型:spring boot 2.1.1+thymeleaf+maven 码云地址:https://gitee.com/ZhangShunHai/upload 项目截图:...

服务监控之 Spring Boot Admin.

一、概述  开始阅读这篇文章之前,建议先阅读下《SpringBoot 之Actuator》,该篇文章提到 Spring Boot Actuator 提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。但是美中不足的是: 所有的监控都需要调用固定的接口来查看,如果全面...

Spring Boot中使用@Transactional注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)...