springBoot

1. 概述

1.1 什么是SpringBoot

springBoot
SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品,设计目的是用来简化新Spring应用的初始搭建以及开发过程

最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注与业务而非配置

1.2 为什么要学习SpringBoot

之前
① 复杂的配置
项目各种配置其实是开发时的消耗,写配置挤占了写应用程序逻辑的时间

② 混乱的依赖管理
项目当中添加很多库已经很麻烦了,还要知道这些库的哪个版本和其他库不会有冲突,一旦选错了依赖的版本,随之而来的不兼容问题就会造成项目的致命性伤害

现在
① Spring Boot 简化了基于Spring的应用开发

② 只需要“run”就能创建一个独立的、生产级别的Spring应用

③ Spring Boot为Spring平台及第三方库提供开箱即用的设置

1.3 SpringBoot特点

① 为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验

② 开箱即用,通过简单的配置,简化了以前复杂配置操作

③ 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等

④ 无需 XML 配置

1.4 springBoot功能

① 以jar包方式独立运行(jar -jar xxx.jar)

② 内嵌Servlet容器(tomcat, jetty),无需以war包形式部署到独立的servlet容器中

③ 提供starter简化maven依赖包配置

④ 自动装配bean(大多数场景)

⑤ 提倡使用java配置和注解配置结合而无需xml配置

2. springBoot快速入门

① 创建Maven工程

② 引入springBoot依赖

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

③ 添加springBoot启动器依赖

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

在第二步的parent里面规定了版本号,之后就不用再应用版本号,且在第二步添加了启动器后web工程常用的依赖会自动帮你引入

④ 编写启动类,并添加注解

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

在这一步后运行已经可以连通服务器了,因为springBoot内置了tomcat

⑤ 编写Conroller直接访问

@Controller
public class MyController {
    @RequestMapping("hello")
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

当你在第三步配置了web启动器,他就会自动把你的tomcat,SpringMVC等引入

如遇到spring boot run启动时非常缓慢使用以下方法

  1. 在命令行中输入hostname 查询当前主机名称

  2. 到C盘Windows\System32\drivers\etc中找到host文件

  3. 复制一份其它地方进行编辑,编辑时在hostname之后添加.local

  4. 注意事项: 127.0.0.1和local之间是两个tab 不是空格

⑥ 热部署配置
引入依赖

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

3. 编写配置

1. springBoot默认使用servlet3.0 可以没有web.xml

2. 没有任何的xml,我们想要做一些自定义的配置,比如数据库相关的信息,该如何配置?
springBoot已经帮助我们做了大量的配置,剩下的使用java配置

3. SpringBoot进行Java配置
springBoot当中java配置主要靠java类和一些注解代替xml
① @Configuration:声明一个类作为配置类,代替xml文件

② @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签

③ @value:属性注入

④ @PropertySource:指定外部属性文件

创建配置类,引入jabc.properties

//声明一个类作为配置类,代替xml文件
@Configuration 
//@PropertySource:指定外部属性文件
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
//@value:属性注入
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;
    /*方法的返回值就是一个bean对象
    * 就可以使用@autoWare进行注入
    * */
	//@Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签,交给spring容器管理
    @Bean
   
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

在控制器使用

@Controller

public class HelloController {
    @Autowired
    private DataSource dataSource;
    @RequestMapping("hello")

    @ResponseBody

    public String hello(){

        return "hello spring boot"+dataSource;

    }

}

4. 在configuration配置文件中的属性都要手动注入,可以使用springBoot的属性注入方法,把属性都放在application.properties文件中,然后创建一个类加载属性,以后再配置文件中直接去类里面拿属性即可

① 创建application.properties(必须叫这个),并把属性放入,会自动加载

② 创建一个类加载属性,在类上加上@ConfigurationProperties注解,就会自动的根据application.properties中的属性,对该类中的属性赋值(通过set方法,所有要提供set方法)今后就可以重复使用这个类
在这里插入图片描述
③ 在config中直接使用即可
在这里插入图片描述
5. yaml文件方式

配置文件除了使用application.properties类型,还可以是后缀名为:.yml或.yaml的类型,也会自动的加载
YAML是一种简洁的非标记语言,是以数据为中心,使用空白缩进,分行组织数据,从而使得表示更加简洁易读
如果有两个配置文件一个.properties和一个.yml,会取两个并集,如果有相同的名称,会以properties为主
在这里插入图片描述
在这里插入图片描述

SSM整合

  1. 创建maven工程,引入springBoot依赖
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
</parent>
  1. 添加springBoot启动器依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
  1. 编写启动类Application
package com.javaer;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}
  1. 整合Mybatis
    ① 添加JDBC启动器
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

② 添加MySql数据库驱动

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

③ 配置连接参数(application.yml)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&characterEncoding=utf8
    username: root
    password: 1234

④ 添加Mybatis启动器

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

⑤ 配置Mybatis(application.yml)

mybatis:
#  mapper文件所在的位置在resources下的mapper文件夹
  mapper-locations: mapper/*.xml
#  别名
  type-aliases-package: pojo
  configuration:
#    开启驼峰命名
    map-underscore-to-camel-case: true

⑥ 创建mapper接口(resources和java下分别都有一个mapper包,resources下放.xml文件,java下放接口文件)
在这里插入图片描述
⑦ 在Application启动类添加注解扫描接口mapper自动注入到spring

package com.javaer;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.javaer.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

  1. 接下来就和之前ssm三层架构的写法一样了

注意
① 如果出现
在这里插入图片描述
解决方法:
在pom添加

<build>
  <finalName>Spring</finalName>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.0.2</version>
      <executions>
        <execution>
          <id>default-compile</id>
          <configuration>
            <compilerArgument>-proc:none</compilerArgument>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </execution>
        <execution>
          <id>default-testCompile</id>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

解决方法2
升级lombok

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>10</source>
                <target>10</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.16.20.0</version>
        </plugin>
    </plugins>
</build>

② 如果出现mapper无法自动注入解决方案
在这里插入图片描述
在这里插入图片描述

  1. application.yml完整配置
server:
  port: 80

spring:
  mvc:
    servlet:
      load-on-startup: 1
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&characterEncoding=utf8
    username: root
    password: 1234
mybatis:
#  mapper文件所在的位置
  mapper-locations: mapper/*.xml
#  别名
  type-aliases-package: pojo
  configuration:
#    开启驼峰命名
    map-underscore-to-camel-case: true

  1. pom.xml完整配置
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.javaer</groupId>
    <artifactId>SpringBootPro</artifactId>
    <version>1.0</version>
    <!--springboot依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
    <dependencies>
        <!--springboot启动器依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--jdbc启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--添加Mysql数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
<!--        mybatis启动器-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>Spring</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <configuration>
                            <compilerArgument>-proc:none</compilerArgument>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-testCompile</id>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

通用Mapper

通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。极其方便的使用MyBatis单表的增删改查。
只支持单表
① 引用启动器(这个启动器已经继承了mybatis,引入了就不用引入mybatis)

<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper-spring-boot-starter</artifactId>
	<version>2.1.5</version>
</dependency>

② 在Application启动类上添加通用mapper扫描注解@MapperScan(“com.javaer.mapper”)(注意,引入的是tk.mybatis)

③ mapper接口继承Mapper<实体>
在这里插入图片描述
④ 在实体类配置属性
@Table 配置表名
@Id 配置主键
@KeySql 配置主键自动增长
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值