SpringBoot快速入门(springboot入门教程)

  本篇文章为你整理了SpringBoot快速入门(springboot入门教程)的详细内容,包含有springboot 快速入门 springboot入门教程 springboot 教程 springboot超详细教程 SpringBoot快速入门,希望能帮助你了解 SpringBoot快速入门。

  import org.springframework.web.bind.annotation.GetMapping;

  import org.springframework.web.bind.annotation.PathVariable;

  import org.springframework.web.bind.annotation.RequestMapping;

  import org.springframework.web.bind.annotation.RestController;

   * @Name UserController

   * @Author Administrator

   * @Date 2022-08-09 10:29

   * 用户控制类

  @RestController

  @RequestMapping("/users")

  public class UserController {

   // Handler

   @GetMapping("/{id}")

   public String save(@PathVariable Integer id){

   System.out.println("id = " + id);

   return "save success";

  

 

 

  
1.2 SpringBoot工程启动

  只需要找到启动类的main方法,运行即可只需要找到启动类的main方法,运行即可

  作用:为了快速开发Spring项目:简化配置 ,简化依赖引入。

  Spring的缺点:配置繁琐、依赖繁琐。

  可以使用SpringBoot的自动配置和场景启动器(起步依赖)克服上述缺点。

  SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想。不需要关注配置,重点关注业务逻辑开发,缩短了项目周期。

  SpringBoot实现了0配置,1个依赖完成项目搭建。

  SpringBoot通过两点实现了上述效果:

  
起步依赖

  针对不同的场景封装了启动器,比如:web场景启动器中引入了所有web需要的依赖,我们只需要引入web场景启动器坐标即可。

  
SpringBoot还提供了一些嵌入式web服务器、安全、指标、健康监测、外部配置等。

  注意:SpringBoot只是提供了一种快速开发Spring项目的方式,而非对Spring功能上的增强。
 

  
 

  2.2 起步依赖

  又名场景启动器

  2.2.1 使用

  起步依赖,就是依赖。可以理解为一个依赖组,一组依赖。

  像导入普通依赖一样,导入即可。

  2.2.2 原理

  


 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"

   modelVersion 4.0.0 /modelVersion

   parent

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-parent /artifactId

   version 2.7.2 /version

   relativePath/ !-- lookup parent from repository --

   /parent

   groupId com.andan /groupId

   artifactId spring_boot_io /artifactId

   version 0.0.1-SNAPSHOT /version

   name spring_boot_io /name

   description Demo project for Spring Boot /description

   properties

   java.version 1.8 /java.version

   /properties

   dependencies

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-test /artifactId

   scope test /scope

   /dependency

   /dependencies

   build

   plugins

   plugin

   groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   /plugin

   /plugins

   /build

   /project

  

 

  


 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"

   parent

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-parent /artifactId

   version 2.7.2 /version

   /parent

   dependencies

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-test /artifactId

   scope test /scope

   /dependency

   /dependencies

   /project

  

 

  
Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty

  

 dependencies 

 

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   !--web起步依赖环境中,排除Tomcat起步依赖--

   exclusions

   exclusion

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-tomcat /artifactId

   /exclusion

   /exclusions

   /dependency

   !--添加Jetty起步依赖,版本由SpringBoot的starter控制--

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-jetty /artifactId

   /dependency

   /dependencies

  

 

  3. 配置

  3.1 配置文件分类

  SpringBoot支持yml/yaml和properties等格式的配置文件。

  按照约定,配置文件的文件名为application.xxx

  三种配置文件的优先级:properties yml yaml,

  多个配置(文件)中配置了相同的key,优先级高的生效;多个配置(文件)中配置了不同的key,同时生效。

  示例如下:

  
缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。

  
获取方式

  首先在当前类中注入Environment对象,然后通过该对象的getProperty(“key”)方法获取对应的值

  
public String getById(@PathVariable Integer id){

   System.out.println(environment.getProperty("lesson"));

   System.out.println(environment.getProperty("server.port"));

   System.out.println(environment.getProperty("enterprise.age"));

   System.out.println(environment.getProperty("enterprise.subject[1]"));

   return "hello , spring boot!";

  

 

 

  
// 添加注解,并指定访问前缀。前缀与配置文件中对应的一级属性名一致

  @ConfigurationProperties(prefix = "enterprise")

  public class Enterprise {

   // 实体类中成员变量名和二级属性名一致

   private String name;

   private Integer age;

   private String tel;

   private String[] subject;

  

 

 

  
public class BookController {

   // 注入Enterprise,该对象就读取了配置文件,并封装配置文件属性到该对象中。

   @Autowired

   private Enterprise enterprise;

   @GetMapping("/{id}")

   public String getById(@PathVariable Integer id){

   System.out.println(enterprise);

   return "hello , spring boot!";

  

 

 

  
解决方案(配置依赖)

  

 !-- SpringBoot配置处理器。解决配置文件无提示和实体类飘红问题 -- 

 

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-configuration-processor /artifactId

   optional true /optional

   /dependency

  

 

  
# 高版本的springBoot中,spring.profiles:文档名 的命名方式已经被标记为过时

  # 推荐使用 spring.config.activate.on=profile:文档名 的命名方式

  # 激活方式保持不变

  spring:

   config:

   activate:

   on-profile: dev

  server:

   port: 80

  spring:

   profiles: pro

  server:

   port: 81

  spring:

   profiles: test

  server:

   port: 82

  

 

 

  
为文档命名的方式,在不同的SpringBoot版本中会稍有差异

  低版本中只支持:spring.profiles:文档名

  高版本还支持并推荐使用:spring.config.activate.on=profile:文档名

  
3.4.2 总结

  不要记,配置的时候,最终要的是结果;只要结果符合预期,怎么配置都可以。

  想了解配置细节规则,可以查看官网文档。

  4. 整合其他技术

  最终目的是为了能够完成SSM的整合

  SpringBoot整合Spring(不需要)

  SpringBoot整合SpringMVC(导入web起步依赖)

  SpringBoot整合MyBatis(主要)

  4.1 整合Mybatis

  4.1.1 对比Spring整合Mybatis

  
配置起步依赖,及MySQL数据库驱动和Druid数据源

  

 !-- 导入Mybatis起步依赖:version -- 

 

   dependency

   groupId org.mybatis.spring.boot /groupId

   artifactId mybatis-spring-boot-starter /artifactId

   version 2.2.2 /version

   /dependency

   !-- mysql数据库驱动 --

   dependency

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   version 5.1.48 /version

   /dependency

  
// @Mapper // 把该接口的代理对象装配进Spring(Boot)容器 和@MapperScan二选一即可

  public interface BookDao {

   @Select("select * from ssm_spring.t_book where id= #{id}")

   public Book selectById(Integer id);

  

 

  
import org.mybatis.spring.annotation.MapperScan;

  import org.springframework.boot.SpringApplication;

  import org.springframework.boot.autoconfigure.SpringBootApplication;

   * 整合其他技术的启动类

   * @Author Vsunks.v

   * @Blog blog.sunxiaowei.net/996.mba

   * @Description: 整合其他技术的启动类

  @SpringBootApplication

  @MapperScan("com.andan.dao") // 扫描指定位置的mapper接口,一劳永逸

  public class IntegrateApplication {

   public static void main(String[] args) {

   SpringApplication.run(IntegrateApplication.class,args);

  

 

 

  
导入起步依赖(脚手架方式创建的模块会自动添加)

  在主包下编写测试入口类(脚手架方式创建的模块会自动添加)

  4.2.2 代码演示

  
导入起步依赖(脚手架方式创建的模块会自动添加)

  

 !-- test起步依赖(脚手架建的boot项目默认导入) -- 

 

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-test /artifactId

   scope test /scope

   /dependency

  

 

  
如果遇到没有这个程序包的问题 把pom的依赖全删了保存在重新导入依赖刷新

  

package com.andan;

 

  import com.andan.dao.BookDao;

  import com.andan.entity.Book;

  import org.junit.jupiter.api.Test;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.boot.test.context.SpringBootTest;

  
// @RunWith(SpringRunner.class) // 使用junit4 需要配置该运行器

  // 标注该类是一个SpringBoot中的测试类,该类要放在主包下

  // 如果不在主包下,需要通过其classes属性指定启动类的字节码对象

  @SpringBootTest

  class BookDaoTest {

   // 测谁就注入谁

   @Autowired

   BookDao bookDao;

   @Test

   public void testSelectById() {

   Book book = bookDao.selectById(14);

   System.out.println("book = " + book);

  

 

  4.3 整合service

  不需要整合,按照Spring的要求编码即可。

  4.3.1 实现步骤

  新建service接口和实现类

  装配实现类进Spring容器,并注入Dao

  定义方法调用Dao中方法

  4.3.2 代码演示

  
import com.andan.service.BookService;

  import org.springframework.beans.factory.annotation.Autowired;

   * @Name BookServiceImpl

   * @Author Administrator

   * @Date 2022-08-09 11:03

   @Service

  public class BookServiceImpl implements BookService {

   @Autowired

   BookDao bookDao;

   @Override

   public Book getById(Integer id) {

   return bookDao.selectById(id);

  

 

 

  
import com.andan.service.BookService;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.web.bind.annotation.GetMapping;

  import org.springframework.web.bind.annotation.PathVariable;

  import org.springframework.web.bind.annotation.RequestMapping;

  import org.springframework.web.bind.annotation.RestController;

   * @Name BookController

   * @Author Administrator

   * @Date 2022-08-09 11:01

  @RestController

  @RequestMapping("/books")

  public class BookController {

   @Autowired

   BookService bookService;

   // 根据id查询

   @GetMapping("/{id}")

   public Book getById(@PathVariable Integer id) {

   return bookService.getById(id);

  

 

 

  4.5 静态页面

  静态页面,放在resources/static文件夹下。

  也可以放在其他位置,使用SpringMVC中的放行静态资源;SpringBoot支持读取配置类,方式和之前一致。

  最后:附上spring-boot官方文档地址

  https://docs.spring.io/spring-boot/docs/current/reference/html/

  以上就是SpringBoot快速入门(springboot入门教程)的详细内容,想要了解更多 SpringBoot快速入门的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: