springBoot搭建

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: springBoot搭建

@TOC

一、在学习spring Boot之前我们来回顾一下Spring

首先说一下spring的优点:
spring是轻量级的, 非侵入式的, IOC(控制反转), AOP(面向切面编程)的, 一站式框架,
同时也有突出的缺点:

  1. 配置麻烦, 非常的模板化, 例如打开管理事务注解啊
  2. 需要开发人员添加许多的依赖, 且依赖之间的版本不匹配

所以SpringBoot对Spring的两个缺点进行补充, 主要是对Spring框架搭建进行封装优化, 主要是换了一种方式进行配置, 将许多模板化配置直接整合了

二、Spring Boot介绍

Spring Boot是由Pivotal团队提供的在spring框架基础上开发的框架, 目的简化应用的初始搭建与开发过程

Spring Boot不提供Spring的框架的核心特性以及拓展功能, 只是用于快速灵敏的开发新一代的基于spring框架的框架, 可以快速的搭建, 并且集成其他框架与组件

即并不是来代替Spring, 而是与spring框架紧密结合提升Spring

在spring Boot中是约定大于配置
●SpringBoot特点:

  1. 创建独立的 spring 应用程序
  2. 直接内嵌 tomcat(一个项目就是一个服务, 就是微服务的思想)、jetty 和 undertow
  3. 提供了固定化的“starter”配置,以简化构建配置
  4. 尽可能的自动配置 spring 和第三方库
  5. 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
  6. 绝对不会生成代码,并且不需要 XML 配置

    三、Spring Boot开发环境搭配

  7. 官网配置生成模板

网址https://start.spring.io/
选择完成点击Generate

  1. 在线下载后, 解压修改pom.xml版本为2.6.6, 删除mvn文件夹, mvnw.cmd文件, 导入到idea里
    解压, 打开文件
    在这里插入图片描述
    修改版本为2.6.6
    在这里插入图片描述
    删除mvnw.cmd文件与,mvn文件夹, 不然下载jar包就会默认到maven的中央仓库去下载

在这里插入图片描述
导入到idea里, 等待下载所欲jar包, 开发一个controller
在这里插入图片描述
开启内置服务器, 可以使用启动类的main方法来启动程序
在这里插入图片描述
在使用main方法启动springBoot程序之后, 可以看到有一个Spring的Logo图案, 该图案可以通过在线生成启动 logo来替换掉

https://www.bootschool.net/ascii
下载存放在 resources 目录下即可.

在这里插入图片描述

浏览器访问
127.0.0.1:8080
不用再将项目部署到服务器, spring Boot直接把项目放进微服务器里了

四、Spring Boot核心

  1. Spring Boot核心功能:
    <1>起步依赖: 会把项目中使用到的相关组件自动依赖进来(json...)
    <2> 自动配置: Spring Boot会根据项目里依赖的相关组件, 启动时, 创建并且初始化

    1. Spring Boot的配置文件

Spring Boot使用一个全局的配置文件(文件名称是固定的),

<1>applocation.properties 内容是键值对格式
>

如: server:port=9999

<2>application.yml

语法结构: key: 空格 value
以此来表示键值对关系(空格不能省略), 以空格的缩进来控制层级关系, 只要左边对齐就是同一层级
K:空格 V
值如果是字符串就直接鞋, 不用加引号
在这里插入图片描述
这里错误, 应该是

server:
    port: 9999

配置端口号是port : 9999

五、Spring Boot添加模块

<1><为了提供JdbcTemlate数据源对象
<2>提供事务管理的功能

  1. Spring Boot添加jdbc模块
    1.1 首先要导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

1.2 在spring-boot配置文件里面, 配置数据库的连接信息, 生成默认的数据源对象, Template, 事务管理功能

在这里插入图片描述
测试
在这里插入图片描述

  1. springBoot 整合阿里数据源Druid
    2.1 导入阿里数据源jar包
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

2.2 在 yml 文件中注册阿里数据库连接池

type: com.alibaba.druid.pool.DruidDataSource

在这里插入图片描述

2.3 添加一个配置类, 用来生成DruidDataSource对象

/*
 @Configuration  配置注解  表示此类是springBoot项目中一个配置类,sprngboot启动时会扫描
*/
@Configuration
public class DruidDataSourceConfig {
   
   

    /*
       @Bean  == <bean  id=""  class="">  作用在方法上,方法中会产生一个对象,最终把此对象交给spring容器
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid() {
   
   
        //创建DruidDataSource对象, 并从yml配置文件读取配置值, 赋值
        DruidDataSource  dataSource = new DruidDataSource();
        //dataSource.setInitialSize();
        return dataSource;
    }
}
  1. springBoot 集成Mybatis

3.1 导入依赖

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

3.2
在spring Boot配置文件里 配置mybatis
在这里插入图片描述
3.3业务逻辑类
dao层

@Repository
public interface LoginDao {
   
   
    Admin login (Admin admin);
}

Loginmapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<!--
   映射文件与操作接口绑定的
-->
<mapper namespace="com.jwq.news.dao.LoginDao">
    <select id="login" resultType="com.jwq.ssm.model.Admin">
          select * from admin where account=#{
   
   account} and password=#{
   
   password}
     </select>
</mapper>

service层

@Service
@Transactional
public class LoginService {
   
   

    @Autowired
    LoginDao loginDao;


    public Admin login(Admin admin){
   
   
        Admin a = loginDao.login(admin);
        return a;
    }
}

web层

@RestController
@RequestMapping(path = "/loginCtl")
public class LoginController {
   
   

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Autowired
    LoginService loginService;

    @Transactional
    @RequestMapping(path = "/login")
    public String test(){
   
   
        loginService.login(new Admin());
        System.out.println("hello ");
        return "hello";
    }
}

3.4在启动类上添加注解, 扫描接口所在的包生成代理对象

在这里插入图片描述

六、Spring Boot新注解介绍

项目 Value
@SpringBootApplication 是springboot中最核心的注解标签,触发类加载功能, 在启动时,回去加载类上加
@Configuration 表示此类是springBoot项目中一个配置类,sprngboot启动时会扫描类上加
@Bean 表示此方法会返回一个对象,将此对象获取放入到spring容器里面,**等同于xml里的方法上加
@ConfigurationProperties(prefix = "spring.datasource") 可以将application.xml文件中的内容读取到,且赋给相应属性方法上或者属性加
@MapperScan("com.jwq.news.dao") 扫描接口所在的包, 生成代理对象 启动类上加
@MapperScan("com.jwq.news.dao") 扫描接口所在的包, 生成代理对象 启动类上加
@Value("${filePath.path1}") 将配置文件里的值自动赋给属性属性上加

七、统一异常处理

在日常开发时, 程序经常有一些异常, 需要我们异常处理try catch 或者 throws进项抛出, 非常的繁琐, 这样既要花费时间来处理异常, 而且使得代码看起来不简洁, 所以希望方便程序员写代码, 我们可以使用统一异常处理

springboot也对异常处理做了不错的支持, 使用

第一个是开启全局的异常捕获, 后者是定义捕获哪些异常, 参数是对应异常的.class对象
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 异常处理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
        CommonResult commonResult = new CommonResult(500,e.getMessage());
        return commonResult;
        }
}

@TOC

一、在学习spring Boot之前我们来回顾一下Spring

首先说一下spring的优点:
spring是轻量级的, 非侵入式的, IOC(控制反转), AOP(面向切面编程)的, 一站式框架,
同时也有突出的缺点:

  1. 配置麻烦, 非常的模板化, 例如打开管理事务注解啊
  2. 需要开发人员添加许多的依赖, 且依赖之间的版本不匹配

所以SpringBoot对Spring的两个缺点进行补充, 主要是对Spring框架搭建进行封装优化, 主要是换了一种方式进行配置, 将许多模板化配置直接整合了

二、Spring Boot介绍

Spring Boot是由Pivotal团队提供的在spring框架基础上开发的框架, 目的简化应用的初始搭建与开发过程

Spring Boot不提供Spring的框架的核心特性以及拓展功能, 只是用于快速灵敏的开发新一代的基于spring框架的框架, 可以快速的搭建, 并且集成其他框架与组件

即并不是来代替Spring, 而是与spring框架紧密结合提升Spring

在spring Boot中是约定大于配置
●SpringBoot特点:

  1. 创建独立的 spring 应用程序
  2. 直接内嵌 tomcat(一个项目就是一个服务, 就是微服务的思想)、jetty 和 undertow
  3. 提供了固定化的“starter”配置,以简化构建配置
  4. 尽可能的自动配置 spring 和第三方库
  5. 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
  6. 绝对不会生成代码,并且不需要 XML 配置

    三、Spring Boot开发环境搭配

  7. 官网配置生成模板

网址https://start.spring.io/
选择完成点击Generate

  1. 在线下载后, 解压修改pom.xml版本为2.6.6, 删除mvn文件夹, mvnw.cmd文件, 导入到idea里
    解压, 打开文件
    在这里插入图片描述
    修改版本为2.6.6
    在这里插入图片描述
    删除mvnw.cmd文件与,mvn文件夹, 不然下载jar包就会默认到maven的中央仓库去下载

在这里插入图片描述
导入到idea里, 等待下载所欲jar包, 开发一个controller
在这里插入图片描述
开启内置服务器, 可以使用启动类的main方法来启动程序
在这里插入图片描述
在使用main方法启动springBoot程序之后, 可以看到有一个Spring的Logo图案, 该图案可以通过在线生成启动 logo来替换掉

https://www.bootschool.net/ascii
下载存放在 resources 目录下即可.

在这里插入图片描述

浏览器访问
127.0.0.1:8080
不用再将项目部署到服务器, spring Boot直接把项目放进微服务器里了

四、Spring Boot核心

  1. Spring Boot核心功能:
    <1>起步依赖: 会把项目中使用到的相关组件自动依赖进来(json...)
    <2> 自动配置: Spring Boot会根据项目里依赖的相关组件, 启动时, 创建并且初始化

    1. Spring Boot的配置文件

Spring Boot使用一个全局的配置文件(文件名称是固定的),

<1>applocation.properties 内容是键值对格式
>

如: server:port=9999

<2>application.yml

语法结构: key: 空格 value
以此来表示键值对关系(空格不能省略), 以空格的缩进来控制层级关系, 只要左边对齐就是同一层级
K:空格 V
值如果是字符串就直接鞋, 不用加引号
在这里插入图片描述
这里错误, 应该是

server:
    port: 9999

配置端口号是port : 9999

五、Spring Boot添加模块

<1><为了提供JdbcTemlate数据源对象
<2>提供事务管理的功能

  1. Spring Boot添加jdbc模块
    1.1 首先要导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

1.2 在spring-boot配置文件里面, 配置数据库的连接信息, 生成默认的数据源对象, Template, 事务管理功能

在这里插入图片描述
测试
在这里插入图片描述

  1. springBoot 整合阿里数据源Druid
    2.1 导入阿里数据源jar包
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

2.2 在 yml 文件中注册阿里数据库连接池

type: com.alibaba.druid.pool.DruidDataSource

在这里插入图片描述

2.3 添加一个配置类, 用来生成DruidDataSource对象

/*
 @Configuration  配置注解  表示此类是springBoot项目中一个配置类,sprngboot启动时会扫描
*/
@Configuration
public class DruidDataSourceConfig {
   
   

    /*
       @Bean  == <bean  id=""  class="">  作用在方法上,方法中会产生一个对象,最终把此对象交给spring容器
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid() {
   
   
        //创建DruidDataSource对象, 并从yml配置文件读取配置值, 赋值
        DruidDataSource  dataSource = new DruidDataSource();
        //dataSource.setInitialSize();
        return dataSource;
    }
}
  1. springBoot 集成Mybatis

3.1 导入依赖

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

3.2
在spring Boot配置文件里 配置mybatis
在这里插入图片描述
3.3业务逻辑类
dao层

@Repository
public interface LoginDao {
   
   
    Admin login (Admin admin);
}

Loginmapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<!--
   映射文件与操作接口绑定的
-->
<mapper namespace="com.jwq.news.dao.LoginDao">
    <select id="login" resultType="com.jwq.ssm.model.Admin">
          select * from admin where account=#{
   
   account} and password=#{
   
   password}
     </select>
</mapper>

service层

@Service
@Transactional
public class LoginService {
   
   

    @Autowired
    LoginDao loginDao;


    public Admin login(Admin admin){
   
   
        Admin a = loginDao.login(admin);
        return a;
    }
}

web层

@RestController
@RequestMapping(path = "/loginCtl")
public class LoginController {
   
   

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Autowired
    LoginService loginService;

    @Transactional
    @RequestMapping(path = "/login")
    public String test(){
   
   
        loginService.login(new Admin());
        System.out.println("hello ");
        return "hello";
    }
}

3.4在启动类上添加注解, 扫描接口所在的包生成代理对象

在这里插入图片描述

六、Spring Boot新注解介绍

项目 Value
@SpringBootApplication 是springboot中最核心的注解标签,触发类加载功能, 在启动时,回去加载类上加
@Configuration 表示此类是springBoot项目中一个配置类,sprngboot启动时会扫描类上加
@Bean 表示此方法会返回一个对象,将此对象获取放入到spring容器里面,**等同于xml里的方法上加
@ConfigurationProperties(prefix = "spring.datasource") 可以将application.xml文件中的内容读取到,且赋给相应属性方法上或者属性加
@MapperScan("com.jwq.news.dao") 扫描接口所在的包, 生成代理对象 启动类上加
@MapperScan("com.jwq.news.dao") 扫描接口所在的包, 生成代理对象 启动类上加
@Value("${filePath.path1}") 将配置文件里的值自动赋给属性属性上加

七、统一异常处理

在日常开发时, 程序经常有一些异常, 需要我们异常处理try catch 或者 throws进项抛出, 非常的繁琐, 这样既要花费时间来处理异常, 而且使得代码看起来不简洁, 所以希望方便程序员写代码, 我们可以使用统一异常处理

springboot也对异常处理做了不错的支持, 使用

第一个是开启全局的异常捕获, 后者是定义捕获哪些异常, 参数是对应异常的.class对象
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 异常处理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
        CommonResult commonResult = new CommonResult(500,e.getMessage());
        return commonResult;
        }
}
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
XML 监控 Java
SpringBoot基础
SpringBoot基础
|
19天前
|
Java Maven
手动搭建Springboot项目
手动搭建Springboot项目
39 0
|
19天前
|
监控 JavaScript Java
SpringBoot基础(二)
SpringBoot的监听机制其实是对Java提供的事件监听机制的封装 Java的事件监听机制中定义了以下几个角色: 事件(Event):继承Java.util.EventObject类的对象 事件源(Source):任意对象Object 监听器(Listener):实现java.util.EventListener接口的对象
|
19天前
|
NoSQL Java 数据库连接
SpringBoot基础 (一)
1、配置文件 SpringBoot使用一个全局的配置文件,配置文件的名称是固定的 application.properties 语法结构:key=value application.yml 语法结构:key:(空格)value 配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了
|
8月前
|
Java 编译器 数据格式
SpringBoot快速实践
启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了,那你直接把以前项目的依赖粘过来就行了: 一个是父工程的依赖: <!--指定了一个父工程,父工程中的东西在该工程中可以继承过来使用--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent> <!--JDK 的版本-->
22 0
|
8月前
|
Cloud Native Java Go
gPRC与SpringBoot整合教程
gPRC与SpringBoot整合教程
67 0
|
10月前
|
运维 监控 前端开发
springboot基础
springboot基础
37 0
|
XML 监控 Java
初识springboot【手把手教你搭建springboot项目】+springboot日志详解【超详细】
初识springboot【手把手教你搭建springboot项目】+springboot日志详解【超详细】
|
XML Kubernetes Java
教你使用k8s来部署springboot服务
在看到此文章之前,想必你已经知道如何启动一个spring boot应用,知道如何通过docker运行你的spring boot服务。
698 0
|
XML NoSQL Java
SpringBoot 开发总结思考(二)
模块装配:假设要注入MongoDB,那么就加上@Configuration注解,有可能一个配置类没办法解决某个方向的问题,往往是很多@Configuration的类组合在一起SpringBoot是使用Enable注解,然后再通过@import导入Selector,通过Selector读取 .factories 文件,最终加载的Configuration
155 0
SpringBoot 开发总结思考(二)