SpringBoot基础

SpringBoot基础篇:

入门须知:

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程

SpringBoot相对于之前的工程的优点:

类配置文件SpringSpringBoot
pom文件中的坐标手工添加勾选添加
web.xml配置类手工制作
Spring/SpringMVC配置类手工制作
控制器手工制作手工制作

SpringBoot项目的创建: 创建的项目是选择Spring Initializr

image-20220327202931520
属性名含义
Name项目的名称
Location项目的位置
Group项目的工程坐标
Artifact项目资产的一个集合(工件)
Package Name项目的包目录
其他的默认即可

创建好之后 , 在项目的目录下有一个名字最后为Application的类 , 这个类就是SpringBoot项目的主启动类 :

image-20220327204247103

SpringBoot工程的创建

(1)使用IDEA创建

步骤如上:


(2)使用Spring官网创建

在IDEA不连接网络的情况下创建一个SpringBoot工程

使用IDEA创建SpringBoot工程时必须要连接网络

访问网站https://start.spring.io/

image-20220327205948800

左边选择完后,在右边的里边选择使用的对应的功能 , 然后点击GENERATE , 这个时候会下载一个压缩文件 , 里边就是对应的工程文件, 将这个文件放入到项目下边 , 在Modules中将这个工程导入进去即可


(3)使用阿里云创建

使用阿里云的网址http://start.aliyun.com

image-20220328153730111

阿里云提供了一些中文的模块,可供选择

阿里云的SpringBoot可能版本不太新,可以直接在pom文件中修改版本号,来进行版本的更新


(4)在不联网的情况下创建

不联网的话是可以创建SpringBoot工程的,但是使用Maven的话不能够下载对应的资源

在创建的时候选择maven项目 , 不使用骨架

①在pom文件中添加对应的依赖和插件

<!--继承: 可以把你对应父工程的东西引用过来-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</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>
<!--Boot工程打包的时候可以用到-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

②创建一个引导类:

@SpringBootApplication//必须要使用这个注解
public class Application {
    //主启动类
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

SpringBoot主体的介绍:

(1)依赖坐标的统一管理 : parent

开发SpringBoot工程要继承 spring-boot-starter-parent ,

注意继承只能使用一次 , 继承之后就不能再继承其他的了

也可以使用引入依赖的方式实现效果(阿里云使用的就是直接导入依赖的方式)

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

对于依赖坐标的版本问题 , 是限制于SpringBoot的版本的 , 不同的版本 , 内置的依赖版本信息是不同的

管理方式 : 将常用的一些坐标和版本号分开创建成两个pom文件 , pom1中是将坐标的版本号全部设为Maven的属性 , 在pom2中设置的是坐标的属性 , 而使用那个版本则是直接引用pom1中的属性 ,

也就是说 : 并不用考虑pom坐标的版本统一的事情了, SpringBoot会自 动给你使用最兼容的版本 , 提供给你使用

image-20220329101953080

在这个文件中定义了很多的Maven版本号 , 在这些版本号下边 , 编写了一些常用的依赖的坐标 , 然后就直接引用了上边的版本号

image-20220329102104676


(2)定义SpringBoot使用的基本依赖坐标:starter

在SpringBoot项目的pom文件中 , 要引入两个依赖 :

image-20220329105516296

这两个依赖就是使用导入的方式 : 在内部封装了SpringBoot项目所使用的基础依赖 , 以达到减少依赖配置的目的


  • 实际开发中 : 仅书写GAV中的A和V由SpringBoot提供 , 除非SpringBoot未提供对应版本 V
  • 如发生坐标错误 , 在指定Version(要小心版本冲突)

(3)引导类:

SpringBoot0102QuickstartApplication ;

这个类就是初始的引导类 , 在创建SpringBoot项目的时候 , 会自动创建这个类 , 这个类的名字可以自定义 ,只要run中的类名对应即可

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

实现引导类的功能主要就是靠 @SpringBootApplication这个注解来完成的 , 注解上边有几个注解 ,

其中使用的是

@ComponentScan : 使用这个注解来加载引导类的父包内的所有子包和文件
@SpringBootConfiguration : 这个注解中有一个注解 , @Configuration
说明这个引导类是一个主配置类 

image-20220329111515617

  • SpringBoot的引导类是Boot工程的执行入口 , 运行main方法就可以启动项目
  • SpringBoot工程运行后初始化Spring容器 , 扫描引导类所在的包加载bean

(4)内嵌Tomcat

在SpringBoot中的

spring-boot-starter-web
中有一个
spring-boot-starter-tomcat
在这个里边有一个内嵌的tomcat-embed-core , 就是内嵌的一个tomcat , 
这里是将整个tomcat/*封装*/为一个/*对象*/ , 
/*将这个对象交给spring容器*/来进行管理

不想使用这个内嵌的tomcat , 可以将这个tomcat在pom文件中排除掉这个tomcat

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

然后可以引入对应的服务器依赖 , SpringBoot默认支持三款服务器 ,

Tomcat :(默认) Apache出品 , 粉丝多,应用面广 , 负载了若干较重的组件
Jetty : 更轻量级 , 负载性能远不及tomcat
Undertow : (了解) , 负载性能勉强跑赢tomcat

引入时只需要将spring-boot-starter-tomcat中的tomcat替换即可

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

SpringBoot的基础配置:

  • 打开resources包中的application.properties , 这个就是SpringBoot使用的配置文件
  • 打开的时候是空的 , 里边什么都没有 ;

基础配置:

(1)修改内置Tomcat使用的端口号 :
server.port = 想要设置的端口号

(2)修改banner
#关闭banner
spring.main.banner-mode=off
#设置banner
spring.banner.image.location=对应的图片位置
spring.main.banner-mode的属性值效果
off关闭banner
console显示在控制台
log显示在日志中

(3)设置日志
logging.level.root=要设置的日志打印级别
logging.level.root的属性效果
info默认的属性
error打印错误级别的日志
debug打印的东西比较多,用在调试的时候使用

查看官网的配置信息 :

image-20220329170825844

image-20220329170918903

image-20220329170948191

上边是文档下边是附录 , 选择附录的第一个 , 里边就是SpringBoot的所有配置信息


注意 :

SpringBoot的配置依赖于你使用的技术是什么 , 只有导入对应的jar包 , 才可以使用对应技术的配置


SpringBoot提供了三种配置文件的格式 :

(1)properties的格式 :
server.port=80

上边已经写了


(2)yml的格式 : (主流格式推荐使用)
server:
  port: 81

(3)yaml格式 :
server:
  port: 82

SpringBoot的配置文件加载优先级

properties > yml > yaml

  • 如果配置多个配置文件 , 会有加载优先级覆盖问题 ,
    • 如果是重复的属性 , 优先级高的属性保存下来
    • 如果没有重复的属性 , 那么就会保存下来

指定SpringBoot的配置文件 :

Setting --> Project Structure --> Facets

选中对应项目/工程

Customize Spring Boot

选择配置文件


SpringBoot整合第三方技术 :

(1)整合Junit :

1.导入测试对应的Starter (SpringBoot自动帮你完成了)

2.测试类使用@SpringBootTest修饰

3.使用自动装配的形式添加要测试的对象(也就是@Autowired)

注意:

  • 使用这个方法的时候 , 测试类所在的包路径要和引导类所在的包的路径一致
  • springboot会从测试类找对应的包名 , 然后找到引导类

解决这个问题 , 在@SpringBootTest注解中加一个属性

@SpringBootTest(classes = Springboot04JunitApplication.class)
//指定项目的配置类是哪个 , 
//还可以使用@ContextConfiguration(classes = Springboot04JunitApplication.class) , 这个注解也可以实现这个功能
class Springboot04JunitApplicationTests {
    //1.注入你要测试的对象
    @Autowired
    private BookDao bookDao;
    
    @Test
    void contextLoads() {
        //2.执行你要测试的对象对应的方法
        bookDao.save();
    }
}

(2)整合MyBatis

配置 :

  • 核心配置 : 数据库的连接相关的信息 (连什么?连谁?什么权限)

    • 在主配置文件中 ;

    • 添加 :

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/sichen?serverTimezone=UTC
          username: root
          password: acpl159357
      
  • 映射配置 : SQL映射(XML / 注解)

    • 让SpringBoot知道这个是一个mapper , 使用注解或者xml都可以

(3)整合MyBatis-Plus

因为这个技术是国人创建的 , 所以直接使用SpringBoot的官方创建方式是没有这个技术的选项的 ,

  • 可以使用阿里云的方式 , 创建SpringBoot工程的时候 , 会带有这个技术的选项的
  • 也可以直接在pom文件中添加对应的依赖坐标
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

使用MyBatis-Plus技术的好处是 :

不用自己再写对应的mapper文件了 ,

  • 直接写一个接口类 , 继承BaseMapper ;
  • 然后将(对应数据库表的)模块的泛型传进去 : Plus会自动对这个类型的名称做映射 , 也就是获取对应的表名

image-20220330191108771

  • 然后就可以直接在service层中注入dao , 并且直接使用MyBatis-Plus内部定义好的方法

但是如果对应的表名带有前缀的话 , MyBatis-Plus会映射不到这个表 , 这个时候

  • (1)就需要在主配置中配置
mybatis-plus:
  global-config:
    db-config:
      table-prefix: 表的前缀名
  • (2)或者直接在实体类上使用注解 : 这样就可以是plus映射到指定的表名
@TableName(value="表名")

(4)整合Druid

  • 导入Druid对应的starter坐标

  • 配置主配置文件

  • #spring:
    #  datasource:
    #    driver-class-name: com.mysql.cj.jdbc.Driver
    #    url: jdbc:mysql://localhost:3306/sichen?serverTimezone=UTC
    #    username: root
    #    password: acpl159357
    #    type: com.alibaba.druid.pool.DruidDataSource
    
    #整合型的配法
    spring:
      datasource:
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/sichen?serverTimezone=UTC
          username: root
          password: acpl159357
    

(4)整合Druid

  • 导入Druid对应的starter坐标

  • 配置主配置文件

  • #spring:
    #  datasource:
    #    driver-class-name: com.mysql.cj.jdbc.Driver
    #    url: jdbc:mysql://localhost:3306/sichen?serverTimezone=UTC
    #    username: root
    #    password: acpl159357
    #    type: com.alibaba.druid.pool.DruidDataSource
    
    #整合型的配法
    spring:
      datasource:
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/sichen?serverTimezone=UTC
          username: root
          password: acpl159357
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值