SpringBoot学习笔记-1:第一章 Spring Boot 入门

简介: SpringBoot学习笔记-1:第一章 Spring Boot 入门

第一章 Spring Boot 入门

1、SpringBoot 简介

1、简介


SpringBoot 简化了 Spring 应用开发,约定大于配置

整个 Spring 技术栈的一个大整合

J2EE 开发一站式解决方案

2、优点


快速建立独立运行的 Spring 项目以及与主流框架集成

使用嵌入式的 Servlet 容器,应用无需打成 war 包

starts 自动依赖与版本控制

大量的自动配置,简化开发,也可以修改默认值

无需配置 XML,无代码生成,开箱即用

准生产环境的运行时应用监控

与云计算的天然集成

3、缺点


需要学习 Spring

2、微服务

2014 年 martin fowler


原文:https://martinfowler.com/articles/microservices.html


译文:http://blog.cuicc.com/blog/2015/07/22/microservices/


微服务是一种架构风格

一个应用应该是一组小型服务

可以通过 HTTP 的方式进行互通

每个功能元素最终都是一个可独立替换和独立升级的软件单元

单体应用 <-> 微服务


3、环境准备

JDK 1.8
Maven 3.x
IntelliJ IDEA 2017 或者 STS
SpringBoot 1.5.9.RELEASE
$ java -version
java version "1.8.0_221"
$ mvn -v
Apache Maven 3.6.3

1、修改用户级别设置 maven


~/.m2/settins.xml


<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
         http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 配置镜像 -->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <mirrorOf>central</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <mirrorOf>central</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
    </profiles>
</settings>

2、修改 IDEA 的 maven 路径


4、SpringBoot HelloWorld

1、创建 Maven 工程


2、导入 SpringBoot 依赖


<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>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

3、创建主程序


package com.mouday;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 标注主程序,说明这是一个SpringBoot应用
@SpringBootApplication
public class ApplicationMain {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationMain.class, args);
    }
}

4、创建 Controller

package com.mouday.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
        return "Hello world!";
    }
}

5、启动程序


$mvn spring-boot:run

访问:

http://localhost:8080/hello


6、简化部署

可以将应用打包成一个可执行 jar 包


# 打包
$ mvn clean package
# 运行
$ java -jar springboot-helloword-1.0-SNAPSHOT.jar

5、文件说明

pom.xml


1、父项目

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

SpringBoot 版本仲裁中心


我们导入的依赖默认不需要写版本


没有在 dependencies 中管理的依赖需要些版本号


2、导入的依赖


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

spring-boot-start: springBoot 场景启动器


帮我们导入了 web 模块正常运行所依赖的组件


spring-boot 将所有的功能场景都抽取出来,做成一个个的 starters 启动器


6、自动配置

package com.mouday;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationMain {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationMain.class, args);
    }
}

@SpringBootApplication 标注 SpringBoot 的主配置类


@SpringBootConfiguration 配置类


@Configuration 标注配置类


配置类 - 配置文件


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


@EnableAutoConfiguration 开启自动配置功能


@AutoConfigurationPackage 自动配置包


将主配置类所在的包及下面子包所有组件扫描到 Spring 容器


@Import 给容器中导入一个组件

从 META-INF/spring.factories 导入自动配置类


自动配置类


org.springframework.boot.autoconfigure


7、使用向导快速创建 Spring Boot 应用

https://start.spring.io/


@ReponseBody


用在方法上,方法直接返回给浏览器

用在类上,类中的所有方法直接返回给浏览器,如果是对象转为 JSON

@RestController


等价于:

@Controller
@ResponseBody

默认生成的 SpringBoot 项目


resources/
    static 保存静态资源 js/css/image
    tamplates 模板页面 默认不支持jsp,可以使用模板引擎(freemaker/thymeleaf)
    application.properties 应用配置
相关文章
|
17天前
|
监控 Java 数据库连接
详解Spring Batch:在Spring Boot中实现高效批处理
详解Spring Batch:在Spring Boot中实现高效批处理
88 12
|
17天前
|
安全 Java 测试技术
详解Spring Profiles:在Spring Boot中实现环境配置管理
详解Spring Profiles:在Spring Boot中实现环境配置管理
59 10
|
14天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
51 5
|
1月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
58 9
|
28天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
39 2
|
2月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
38 9
|
23天前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
25 0
|
2月前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
22 1
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
97 2
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
157 1