Spring Boot开发入门

一、背景介绍

1.概述

做Java开发的人一提起Spring,首先在脑海中浮现出的就是“IoC”,“AOP”,“Spring MVC”,“Spring Security”等等这些名词,甚至大有“无Spring不Java”的感慨。
实际上,时至今日Spring已不再是一个简单的编程框架了,从最初的“SSH框架”发展到今天,Struts和Hibernate都几乎快要从程序员视野中消失了,而Spring却发展成了一个非常庞大且完整的生态。
所以说,除非特别指明是Spring生态中的某个具体框架,否则提起“Spring”应该指的是整个Spring生态。
说句不夸张的话,Java程序员只要精通了Spring,也就掌握了Java开发的精髓。

在整个Spring生态中包含了许多应用在特定场景的具体框架,如:“Spring Framework”,“Spring Security”,“Spring Boot”,“Spring Cloud”等等,其中“Spring Framework”框架是整个生态的核心基础,其他框架都需要依赖“Spring Framework”提供的基础功能,而且每个框架都有自己独立的代码仓库。

2. Spring 框架介绍

Spring是一个开源的Java应用程序框架,由Rod Johnson创建并首次发布于2003年。它提供了一种全面的编程和配置模型,旨在简化企业级应用程序的开发。

Spring框架的核心特性是依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)。依赖注入通过解耦组件之间的依赖关系,使得代码更加可测试、可维护,并且降低了组件之间的耦合度。面向切面编程允许开发者将与业务逻辑无关的横切关注点(如事务管理、安全性等)从核心业务逻辑中分离出来,以提高代码的可重用性和可维护性。

Spring框架还提供了许多其他功能和模块,如数据访问、Web开发、消息传递、任务调度等。它支持各种应用程序类型,包括传统的单体应用、分布式系统、微服务架构等。

随着时间的推移,Spring框架的生态系统不断壮大,涌现出许多与Spring集成的项目和解决方案。例如,Spring Boot是Spring生态系统中的一个子项目,旨在简化Spring应用程序的开发和部署。Spring Cloud则提供了一套用于构建分布式系统的工具和组件。此外,Spring框架还与其他流行的开源技术(如Hibernate、MyBatis、Thymeleaf等)集成,以提供更全面的解决方案。

总之,Spring框架通过提供强大而灵活的特性,帮助开发者构建高效、可扩展且易于维护的Java应用程序。它在Java开发社区中具有广泛的影响力,并被许多企业和开发团队广泛采用。

二、 Spring Boot框架

1. Spring Boot框架介绍

Spring Boot是一款用于简化Java应用程序开发的开源框架,它是由Pivotal软件公司(现为VMware)的工程师们开发的。Spring Boot的目标是简化传统Spring框架的配置和部署过程,提供一个更快速、更易于使用的开发环境。

Spring Boot的发展可以追溯到2013年。当时,Spring框架已经成为Java开发领域最受欢迎的框架之一,但在配置和部署方面存在一些繁琐的问题。为了解决这些问题,Spring团队决定开发一个新的框架,即Spring Boot。

Spring Boot的设计初衷是让开发者能够以最小的配置快速搭建一个可运行的Java应用程序。它通过自动配置和约定大于配置的原则,减少了开发者在项目配置方面的工作量,并提供了丰富的特性和开箱即用的功能,如自动化的依赖管理、内嵌服务器、健康检查、监控等。同时,Spring Boot也保留了Spring框架的优势,如依赖注入、AOP等。

随着时间的推移,Spring Boot逐渐获得了广泛的认可和应用。它的简洁性和高效性使得开发者能够更专注于业务逻辑的实现,而无需过多关注配置和部署的细节。Spring Boot也积极采纳了开发者的反馈和贡献,不断更新和改进自身的功能。

截至当前,Spring Boot已经成为Java应用程序开发中最流行的框架之一。许多企业和开发团队都在使用它来开发各种类型的应用,包括Web应用、批处理应用、微服务等。同时,Spring Boot也与其他技术生态系统(如Spring Cloud、Spring Data等)密切结合,为开发者提供了全面的解决方案。

2.Spring Boot的缺点

  1. 学习曲线:尽管Spring Boot简化了配置和开发过程,但仍然需要掌握Spring框架的基础知识。对于初学者来说,仍需要一定的学习曲线和理解Spring框架的概念和原则。

  2. 复杂性:尽管Spring Boot简化了很多配置,但对于复杂的应用场景,仍然需要深入了解底层的Spring框架和原理。在某些情况下,需要手动进行配置或调整。

  3. 内置容器限制:Spring Boot内嵌的Web服务器默认适合开发和测试环境使用,对于高并发或特殊需求的生产环境可能不够灵活。在这种情况下,可能需要考虑使用自定义的容器进行部署。

3. 为什么要学习Spring Boot


【Java面试】面试被问:为什么要使用Spring 框架?四年开发都被问蒙了_哔哩哔哩_bilibili3月面试高手文档以整理完成,需要的add My wechat :Mic_jiagou, 视频播放量 15920、弹幕量 53、点赞数 187、投硬币枚数 33、收藏人数 199、转发人数 12, 视频作者 跟着Mic学架构, 作者简介 卫信工粽号:Mic聊架构 回复:66B 领30w字面试文档;一个工作了十四年的java程序员,相关视频:如何叙述Spring Bean 的生命周期,让面试官眼前一亮!,【Java面试】用教科书式回答,说一说你对Spring Cloud的理解?,【Java面试】2年Java开发面试被问,Kafka如何保证消息不丢失?如何轻松搞定面试官,【Java面试】什么是单点登录,以及单点登录的实现流程?,【Java面试】金九银十面试题突击:说一下你对Spring Boot的约定优于配置的理解!,Redis为什么这么快?这道经典并且面试频率很高的面试题,却很少有人回答得比较全面【Java面试】,【Java面试】并发编程面试被问:请你谈一下CAS机制?如何轻松搞定面试官,4年Java”外聘技术专家“ 竟然只要15K?到底是什么原因?【Java面试】,【Java面试】为什么要使用Spring框架?90%的程序员被问到都是懵的,【Java面试】面试被问:Redis和Mysql如何保证数据一致性,如何高分回答?icon-default.png?t=N7T8https://www.bilibili.com/video/BV1k34y1v7pd?vd_source=26d300189f2bb3ed692d3eda53a65d3a

三、Spring boot核心配置

 

1.启动器:  

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
   pom.xml:项目依赖文件

配置文件application.properties

#设置端口号
server.port=8082
#设置访问应用的上下文路径,contextpath
server.servlet.context-path=/myboot


yml不是以键=值的方式,而是 键:值,并且还有层级关系。

推荐使用yml的方式来写,删除application.properties

配置文件的优先级:application.properties>application.yml>appllication.yaml

2.Spring boot基本的包

1.Entity层

entity层又被称为实体类层,实体类通常包含私有成员变量和公共访问方法(getter 和 setter)可以用@Data注解轻松实现,用于存储和访问数据。在实体类中,成员变量通常与表中的列相对应,而访问方法则用于操作这些数据。

2.Service层

Service层通常是用来处理业务逻辑的部分,它还负责调用dao层,实现对数据的处理和业务逻辑的实现,然后返回给controller层。

3.Controller层

Controller层又称为控制类,处理HTTP请求。

4.Dao(Mapper)层

Dao又称为数据访问层,主要作用是实现对数据库的增删改查操作。 

5.连接数据库


引入依赖:

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- 导入Mybatis-Plus依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- 导入lombok依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

 .yml连接数据库:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db02?ServerTimezone=UTC
    username: root  
    password: ***
    driver-class-name: com.mysql.cj.jdbc.Driver
spring:
  #  mysql配置信息
  datasource:
      #                 数据库地址  端口  数据库名
    url: jdbc:mysql://127.0.0.1:3306/springboot_demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
    username: root    # 账号
    password: root    # 密码
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: mapper/*.xml #这个配置是用来连接mapper接口和mapper配置类的
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #运行日志
    map-underscore-to-camel-case: true #驼峰转换
  type-aliases-package: com.example.springbootdemo.model #实体类扫描包


四、mybatis、mybatis-plus、Jpa的原理和简单使用

1. mybatis依赖


mybatis:是一个优秀的持久层的框架, 通过Dao层将业务逻辑和数据访问逻辑分离,是系统的设计更清晰,系统更容易维护和进行单元测试。它对JDBC操作数据库的过程进行封装,使得开发者只需要关注SQL语句本身,不需要再花费精力去处理其他的东西,如:注册驱动、创connection、创建statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。mybatis通过XML配置文件或注解的方式配置要执行的各种Statement或preparedStatement,并通过Java对象和Statement中的SQL语句进行映射,最终生成执行的SQl语句,最后由mybatis执行SQL语句并将结果映射成Java对象返回。

 mybatis依赖:

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


 而mybatis-plus是一个增强工具,它在mybatis的基础上只做增强不做改变,是为简化开发、提高效率而生。

使用spring-boot整合mybatis时,要注意mybatis的映射文件的位置,而mybatis-plus不同,它里面包含了常见的数据库核心操作,一般不需要配置映射文件。

 mybatis-plus依赖:

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

2.JPA


JPA:是一种规范或标准,用来操作实体对象,执行CRUD操作,使得框架在后台替代用户完成所有事情,Spring Data JPA是Spring提供的一套简化JPA开发的框架,提供了许多功能,如:分页、排序以及复杂查询等···

 JPA为我们提供以下功能:                                                                                                                ORM元数据:JPA支持XML和注解两种元数据形式,元数据用来描述对象和关系表之间的映射关系,框架据此将实体对象持久化到数据库中,如@Entity、@Table、@Transient等注解。

        JPA的API:用来操作实体对象,执行CRUD操作,使框架在后台替我们完成所有的事情,是开发者从烦琐的JDBC和SQL代码中解脱出来

        JPQL:通过面向对象而非面向数据库的查询语言来查询数据,避免程序的SQL语句过于读。

JPA依赖:

       

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


JPA配置:

#jpa配置
  jpa:
    show-sql: false
    hibernate:
      ddl-auto: create
     
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5Dialect


五、前端模板引擎Thymeleaf的整合和使用


         Thymeleaf:是一款支持HTML、XML、TEXT、Javascript、CSS、raw等的模板引擎,它可以完全取代JSP,与其他模板引擎相比,Thymeleaf是开箱即用的,不需要启动整个Web项目,其模板语法并不会破坏文档的结构,使用方便。

1.Thymelea依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>2.1.6.RELEASE</version>
</dependency>


2.Thymelea模板:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>
</head>
<body>
 
</body>
</html>

六、常用注解


1.基础注解:

@Service: 注解在类上,表示这是一个业务层bean

@Controller:注解在类上,表示这是一个控制层bean

@Repository: 注解在类上,表示这是一个数据访问层bean

@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写

@Autowired:按类型注入.默认属性required= true

@Resource: 按名称装配。

2.启动注解:

@SpringBootApplication:包含了@ComponentScan@Configuration@EnableAutoConfiguratio注解。

@ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。

@SpringBootConfiguration :等同于spring的XML配置文件;使用Java代码可以检查类型安全。

@EnableAutoConfiguration :自动配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值