SpringBoot--基础

SpringBoot--基础

  • SpringBoot的设计目的是用来简化Spring应用的初始搭建以及开发过程

idea创建springboot入门步骤(需要idea联网)

  1. 创建一个空项目

  2. 之后再项目构建中添加springboot相关配置

本处的springboot版本为2.7.14,如果maven报错可以自己修改一下版本,最新的3.0版本以上需要jdk17以上

  1. 编写控制类

    //Rest模式
    @RestController
    @RequestMapping("/book")
    public class BookController {
    
    //    限制为get请求
        @GetMapping
        public  String getById(){
            System.out.println("springboot is running");
            return "springboot is running";
        }
    }
    
  2. 运行

一些服务器信息

结果:

除了idea还可以通过官网创建或者阿里云创建:

另外在idea选择阿里云的网页创建:

springboot和spring程序的对比

  • Spring程序缺点:
    • 依赖设置繁琐
    • 配置繁琐
  • SpringBoot程序优点
    • 起步依赖(简化依赖配置)
    • 自动配置(简化常用工程配置)
    • 辅助功能(内置服务器,......)

springboot入门解析

parent--管理坐标版本

管理坐标版本方式

在pom.xml可以找到parent

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.5.3</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

starter--定义项目依赖坐标

即:

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

starter就是一个包含了若干个坐标的依赖集,而一个starter中也可以包括starter,嵌套多层

starter定义当前项目使用的所有依赖坐标,以达到减少依赖配置的目的,达到简化配置的目的

总结:实际开发中我们写坐标时,只需要写 ,版本parent帮我们导入,另外如果报错证明parent中没有该坐标的版本需要按照以前的写法把版本也写上

引导类

引导类就是我们创建springboot自带的那个类

内嵌Tomcat

我们可以在starter里面找到tomcat相关坐标:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <version>2.5.3</version>
  <scope>compile</scope>
</dependency>

springboot内置服务器

把tomcat替换为jetty服务器:

SpringBoot的基础配置

找到resources下的application.properties,这就是springboot的配置文件,通过键值对的方式进行配置

一些配置展示:

# 服务的端口配置
server.port=80

#修改banner--启动springboot项目时的图案
##启动时图案出现方式--本处为直接关闭
spring.main.banner-mode=off
##指定banner的图片
spring.banner.image.location=xx.png

#控制日志
#日志级别默认为info--本处为调试级别
logging.level.root=debug
#出错才显示日志
#logging.level.root=error

小知识:80端口是浏览网页端口,不用在网址中输入80,例如localhost:80/aaa直接写成localhost/aaa

其他配置自行去官网查阅

Common Application Properties (spring.io)

另外springboot提供了多种属性的配置方式:上面的properties只是其中的一种配置方式:

现在的主流是yml格式

yaml语法规则

语法规则:

字面值:

数组:

变量引用:

country: sichuan

likes: ${country}\aaa
#用引号包裹的字符串转义字符会生效
likes: "${country}\temp \t1 \t2"

读取yml的数据

//  读取yaml数据中的单一数据
    @Value("${country}")
    private String country1;
//多级数据
@Value("${country.china}")
private String country1;
//  读取yaml数据中的数组
    @Value("${likes[0]}")
    private String country1;
//使用自动装配将所有数据封装到该对象中
@Autowired
private Environment env;
//调用方法
env.getProperty("country")

装配指定数据:

#配置文件中
datasource:
  url: xxx
  driver: com.mysql.jdbc.Driver
  username: root
  password: 123456
//datasource类
//实例化bean
@Component
//指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;

    @Override
    public String toString() {
        return "MyDataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


}
//使用
//    自动装配
    @Autowired
    private MyDataSource myDataSource;

其他注意事项

指定springboot的配置文件:

复制模块:

SpringBoot整合第三方技术

整合JUnit

SpringBoot是默认导入了Junit的,在对应的starter中

进行测试的步骤:

  1. 找到test目录下的该类

  2. 注入要测试的对象

  3. 执行测试对象的方法

    @SpringBootTest
    class Springboot0101QuickstartApplicationTests {
    // 注入测试对象
       @Autowired
       private BookController bookController;
       @Test
       void contextLoads() {
    //    执行对象相关方法
          bookController.getById();
       }
    
    }
    

之后运行即可,springboot测试的关键就是@SpringBootTest注

但是如果想把测试类换一个位置就需要改一下注解

至于原因:找不到对应包下的引导类设置

整合MyBatis

首先,创建项目的时候勾上这两个,当然你也可以自己手动添加相关坐标

配置相关信息:

# 配置相关信息
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jdbcstudy
    username: root
    password: 123456

之后就按照之前mybait学的一样写dao层等

类
public class Book {
    private int id;
    private String username;
    private int password;

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password=" + password +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }
}
dao:
@Repository
@Mapper
public interface BookDao {
    @Select("select * from user where id = #{id}")
    public Book getById(int id);
}
测试:
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        System.out.println(bookDao.getById(1));
    }

}

如果时区错误或mysql版本过高:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
    username: root
    password: 123456
    
    
mybatis-plus:
  global-config:
    db-config:
#      设置id为自增
      id-type: auto

整合MyBatis-Plus

类似MyBatis,但是也有一些不同:

  • 导入的坐标不同
  • 数据层实现简化

springboot没有收录mybatis-plus

创建方法(第一种--快速):

  • 使用阿里云的创建:

  • 选择mybatis-plus:

创建方法(第二种--正统):

  • 选择默认的创建方法:

  • 在pom文件手动导入mybaits-plus的坐标:

    <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.4.3</version>
    </dependency>
    

整合使用:

在之前写的mybatis整个的基础上:

@Repository
@Mapper
public  interface  BookDao extends BaseMapper<Book>{

}

//下面改成上面
//public interface BookDao {
//    @Select("select * from user where id = #{id}")
//    public Book getById(int id);
//}

测试类改为:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        //selectById是 BaseMapper的方法,具体自行查阅api
        System.out.println(bookDao.selectById(2));
    }

}

另外,映射数据库的实体类名字改成和表名一样

如果表名叫tb_book,而类叫book,可以在配置文件中为其添加前缀

#设置mybatis-plus相关配置
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tb_

整合Druid

导入druid的starter坐标:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

配置方法一:

在springboot的配置文件中:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource

配置方法二:(推荐)

spring:
  datasource:
   druid:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/jdbcstudy?serverTimezone=GMT
    username: root
    password: 123456
posted @ 2023-09-04 13:22  云归处、  阅读(3)  评论(0编辑  收藏  举报