冰冰商城项目_SpringBoot


前言

本篇文章为技术储备,商城项目中SpringBoot的学习
SSM整合步骤多、配置繁琐,项⽬进⾏服务器部署步骤繁琐,SpringBoot可以简化整合过程中复杂配置的工具框架

SpringBoot优点:

  • 能够快速的搭建项⽬
  • 对主流的开发框架都提供了⽆配置集成(SpringBoot内置了配置)
  • 项⽬可以独⽴运⾏、⽆需单独配置Servlet容器(内置了Tomcat)
  • 极⼤提⾼了开发、部署效率
  • 提供了运⾏时监控系统(⽇志等)
  • 与云原⽣有天然的集成

SpringBoot缺点:

  • 由于配置都是内置的,报错时定位⽐较困难
  • 版本迭代速度⽐较快、有些版本改动还是⽐较⼤(增加学习成本)

一、SpringBoot入门

1.项目创建

SpringBoot应用需要基于远程服务器创建

远程服务器:

2.整合Mybatis

springboot帮我们完成通用配置,但数据库密码等还需手动配置

1、在springboot主配置文件application.yml ⽂件中配置数据源及路径

spring:
 datasource:
   url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
   driver-class-name: com.mysql.jdbc.Driver
   username: root
   password: admin123
mybatis:
 mapper-locations: classpath:mappers/*Mapper.xml
 type-aliases-package: com.qfedu.springboot.demo.entity
server:
 port: 80

2、在SpringBoot启动类通过 @MapperScan 注解指定DAO接⼝的包名

@SpringBootApplication
@MapperScan("com.qfedu.springboot.demo.dao")
public class SpringbootDemo1Application {
 	public static void main(String[] args) {
     	SpringApplication.run(SpringbootDemo1Application.class, args);
     }
}

3.项目启动

SpringBoot应⽤⾃带Servlet容器—Tomcat,因此⽆需进⾏额外的服务器配置,运⾏启动类即可启动⼀个SpringBoot应⽤

二、SpringBoot原理

2.1starter(依赖+配置)

SpringBoot为我们提供了简化企业级开发绝⼤多数场景的⽀持(提供了多个starter), 我们在进⾏项⽬开发的过程中只需引⼊对应的starter(创建SpringBoot应⽤时可选 择),相关的依赖和配置就会被内置到项⽬中(消除⼈⼯配置)

一、依赖默认

基于Spring官方服务器创建的SpringBoot应用

1、使用了maven中的继承对主流的框架版本进行了配置

<!-- SpringBoot应⽤中的pom 继承了spring-boot-starter-parent.pom -->
<!-- spring-boot-starter-parent.pom⼜继承了spring-boot-dependencies.pom-->
<!-- 在spring-boot-dependencies.pom已经对主流的框架的版本进⾏了声明 -->

开发中使用的依赖如果不指定版本就会使用默认的主流版本,如果指定就会使用指定的版本

2、 引入了maven对springboot支持的插件spring-boot

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>

基于aliyun服务器创建的SpringBoot应用

SpringBoot引⽤的pom没有继承spring-boot-starter-parent.pom,因此版本需要
在当前pom中进⾏定义

二、SpringBoot自动配置

⼀个starter不仅包含依赖,还包含相应的配置,starter中包含的配置都是通过Java类实现的——Java配置⽅式

  • 对基础配置、引⽤的第三⽅依赖中的配置使⽤xml完成:例如数据源配置
  • 业务开发使⽤注解:例如controller、service

1.xml配置

<!--applicationContext.xml-->
<bean id="stu" class="com.qfedu.beans.Student"></bean>
<bean id="date" class="java.util.Date"></bean>

xml配置对应的类交给spring管理,它既可以做配置自定义类,也可以配置第三方类

2.注解配置

@Component
public class Student{
}

@Component 表示这是一个交给spring管理的类,它只能做配置自定义类.@Controller/@Service/@Repository都是一个作用,只不过对表现层、业务层、数据层进行了区分

@ComponentScan 扫描Bean,范围为当前类所在的包

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
//使代码看起来更加简洁

3.Java配置方式

@Configuration
public class SpringConfig{
     @Bean
     public Date getDate(){
         return new Date();
         }
}

@Configuration 表示这个是Java配置类,该类里的方法加@Bean返回配置的类交给spring管理,它既可以做配置自定义类,也可以配置第三方类,但主要用于配置第三方类

@Resource和@Autowired的区别

SpringBoot自动配置的实现

image-20220514105000529

//SpringBoot的启动类
@SpringBootApplication
public class DemoApplication {

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

SpringApplication.run方法中的SpringApplicationRunListeners监听到run调用就会调用getSpringFactoriesInstances方法,而该方法则会调用SpringFactoriesLoader.loadFactoryNames接着调loadSpringFactories,该方法扫描所有依赖中的META-INF目录下的spring.factories文件获得所有自动配置类的路径,依次扫描并加载这些配置类,若果满足自动配置类的初始化条件就初始化,否则跳过。

自定义Banner

在resoueces下新建Banner.txt放入想要的即可(自定义图案网页:http://patorjk.com/software/taag/)

//    ┏┓   ┏┓
//   ┏┛┻━━━┛┻┓
//   ┃        ┃
//   ┃   ━    ┃
//   ┃ ┳┛ ┗┳ ┃
//   ┃        ┃
//   ┃   ┻    ┃
//   ┃        ┃
//   ┗━┓   ┏━┛Codes are far away from bugs with the animal protecting
//     ┃   ┃    神兽保佑,代码无bug
//     ┃   ┃
//     ┃   ┗━━━┓
//     ┃      ┣┓
//     ┃     ┏┛
//     ┗┓┓┏━┳┓┏┛
//      ┃┫┫ ┃┫┫
//      ┗┻┛ ┗┻┛

三、基于SpringBoot的SSM整合

1、创建项目

创建项⽬时添加依赖

  • lombok
  • spring web
  • mysql driver
  • mybatis framework

2、配置mybatis

spring:
 datasource:
   driver-class-name: com.mysql.jdbc.Driver
   url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
   username: root
   password: admin123
 
mybatis:
 type-aliases-package: com.qfedu.springboot.ssm.beans
 mapper-locations: classpath:mappers/*Mapper.xml

3、启动类配置dao扫描

@MapperScan("com.qfedu.springboot.ssm.dao")

4、整合Durid连接池

在SpringBoot中整合MyBatis的时候,默认集成了Hikari连接池,Hikari的效率⽐Druid 要⾼,但是得益于Druid提供了⽐较便捷的监控系统在企业开发中,druid使⽤还是最多的。

添加starter

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

配置连接池数据源

spring:
 datasource:
   druid:
   driver-class-name: com.mysql.jdbc.Driver
   url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
   username: root
   password: admin123
   initial-size: 1
   min-idle: 1
   max-active: 20

到这里其实应用已经可以启动了,但是还是要根据具体的业务场景设计数据库表,在根据表设计实体类,再根据实体类的操作建Dao接口,再去定义业务层接口然后实现,最后设计表现层controller,这里做返回结果的封装,返回状态码的定义(和前端约定),和异常和拦截还有日志

四、Thymeleaf

一、Thymeleaf简介

  • JSP 必须依赖Tomcat运⾏,不能直接运⾏在浏览器中
  • HTML可以直接运⾏在浏览器中,但是不能接收控制器传递的数据
  • Thymeleaf是⼀种既保留了HTML的后缀能够直接在浏览器运⾏的能⼒、⼜实现了JSP显示动态数据的功能——静能查看⻚⾯效果、动则可以显示数据

二、Thymeleaf使用

添加依赖

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

开始使用欸,之后要分离的呀,不管了,要用再回来看

五、SpringBoot的热部署配置

idea的设置里面去做一下就好了,到时候再回来看吧


文章作者: 冰冰的小屋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 冰冰的小屋 !
  目录