第一章 SpringBoot基础入门笔记

本文详细介绍了SpringBoot的基础入门,包括SpringBoot的特点、功能、系统要求和第一个SpringBoot项目的创建过程。此外,还涉及SpringBoot快速入门,如集成mybatis、单元测试、日志配置、热加载/部署等方面,旨在帮助读者快速掌握SpringBoot的使用。
摘要由CSDN通过智能技术生成

一、SpringBoot简介

1、SpringBoot基础介绍

Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。你可以使用Spring Boot创建Java应用,并使用java -jar启动它或采用传统的war部署方式。

1.1、解决的问题

  • 依赖太多了,且存在版本问题。
  • 配置太多了且每次都一样,大部分工程配置每次都是一样的,从一个地方拷贝到另外一个地方;且Spring发展10多年,各种配置版本太多,对于很多程序员来说分不清哪个是有效、哪个无效。
  • 部署太麻烦,需要tomcat部署,项目结构也需要照着Java EE的目录结构来写。

1.2、SpringBoot特点

  • 创建独立的Spring应用程序
  • 嵌入的Tomcat,无需部署WAR文件
  • 简化Maven配置
  • 自动配置Spring
  • 提供生产就绪型功能,如指标,健康检查和外部配置
  • 绝对没有代码生成和对XML没有要求配置

1.3、SpringBoot功能

自动配置(auto-configuration):

一项简化配置的功能,比如在classpath中发现有spring security的jar包,则自动创建相关的bean等。

starters(简化依赖):

这个比较关键,方便spring去集成各类组件,比如redis、mongodb等等。

2、系统要求

默认情况下,目前使用SpringBoot 2.2.1最新版本,最好安装JDK8以及以上的版本,maven使用3.3或者以上的版本。

3、第一个SpringBoot项目

新建一个普通maven项目,创建pom文件:

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

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

3.1、编写代码:

为了完成应用程序,我们需要创建一个单独的Java文件,Maven默认会编译src/main/java下的源码。

新建:com.chj.Example.java

@RestController
@EnableAutoConfiguration
public class Example {
    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }
}

3.2、@RestController和@RequestMapping说明

1)@RestController这被称为一个构造型(stereotype)注解,它为阅读代码的人们提供建议。对于Spring该类扮演了一个特殊角色,在本示例中,我们的类是一个web @Controller,所以当处理进来的web请求时,Spring会询问它。

RestController源码如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

2)@RequestMapping注解提供路由信息它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到home方法,@RestController注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}

3)@EnableAutoConfiguration这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    Class<?>[] exclude() default {};
    String[] excludeName() default {};
}

4)main方法这只是一个标准的方法,它遵循Java对于一个应用程序入口点的约定。我们的main方法通过调用run,将业务委托给了Spring Boot的SpringApplication类。SpringApplication将引导我们的应用,启动Spring,相应地启动被自动配置的Tomcat web服务器;我们需要将Example.class作为参数传递给run方法来告诉SpringApplication谁是主要的Spring组件。

public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
    return run(new Class[]{primarySource}, args);
}

执行main方法,使用一个浏览器打开 localhost:8080,以下输出:Hello World!

4、注意事项

Spring Boot不需要使用任何特殊的代码结构,然而这里有一些地方需要注意。

4.1、使用"default"包

当类没有包含package声明时,它被认为处于default package下,通常不推荐使用default package,并应该避免使用它;因为对于使用@ComponentScan,@EntityScan或@SpringBootApplication注解的Spring Boot应用来说,来自每个jar的类都会被读取,这会造成一定的问题。

4.2、定位main应用类

通常建议你将main应用类放在位于其他类上面的根包(root package)中,通常使用@EnableAutoConfiguration注解你的main类,并且暗地里为某些项定义了一个基础“search package”。例如,如果你正在编写一个JPA应用,被@EnableAutoConfiguration注解的类所在包将被用来搜索@Entity项。

使用根包允许你使用@ComponentScan注解而不需要定义一个basePackage属性如果main类位于根包中,你也可以使用@SpringBootApplication注解。

二、SpringBoot快速入门

1、spring-boot-starter-parent使用

可以继承spring-boot-starter-parent项目来获取合适的默认设置,想配置你的项目继承spring-boot-starter-parent只需要简单地设置parent为:

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

备注

你应该只需要在该依赖上指定Spring Boot版本,如果导入其他的starters,你可以放心的省略版本号。

使用没有父POM的Spring Boot

不是每个人都喜欢继承spring-boot-starter-parent POM,你可能需要使用公司标准parent,或你可能倾向于显式声明所有Maven配置。如果你不使用spring-boot-starter-parent,通过使用一个scope=import的依赖,你仍能获取到依赖管理的好处:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.2.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

2、搭建springboot环境

2.1、新建App.java

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

2.2、新建Controller:

@RestController
public class UserController {
    @RequestMapping("/hello")
    public Object sayHello() {
        return "hello";
    }
}

运行App,在浏览器输入:localhost:8080/hello,发现“hello”说明第一步部署成功。

3、集成mybatis

https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/1.3.5

 

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.5</version>
</dependency>
<dependency>
    <groupId

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值