10 springboot(脚手架类似于框架)知识总汇

SpringBoot 简介

Spring boot是构建于Spring框架(Framework)基础之上,基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性,其核心主要有如下几个方面:
1 起步依赖 项目创建时底层帮你关联依赖。
2 自动配置
3 健康检查(Actator)-监控。

SpringBoot 环境配置

1 JDK
2 STS,IDEA等开发工具 --(STS是集成了spring插件的eclipse)
3 配置Maven(本地仓库,阿里云镜像)

简单注解引入

@Component	
@Scope("singleton")
@Lazy	
public class ObjectPool {
	public ObjectPool() {
	   System.out.println("ObjectPool()");
	}
	@PostConstruct
	public void init() {
		System.out.println("init()");
	}
	@PreDestroy
	public void destory() {
		System.out.println("destory");
	}
}

其中:
@Lazy注解描述类,告诉spring框架此类支持延迟加载,通常会配合单例作用域使用。使用时才会创建实例
@Scope 是Spring中用于定义Bean对象作用域的一个注解,其常用的值(引号引起来)有"singleton"(整个内存有一份Bean实例,此实例创建以后,生命周期会由spring框架管理),“prototype”(多例模式,每次获取都会创建新实例,此实例会在需要时创建与lazy特性无关,这个实例创建以后,不会交给spring管理,spring可以对其初始化,但不负责销毁。)等。
@PostConstruct 注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行(是对象创建以后的初始化)。
@PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行(当作用域为prototype时,此方法不会执行)。

一个接口有多个实现类的对象时,并且这些对象都交给了Spring管理

public class CacheTests {
	@Autowired
	@Qualifier("softCache")  //使用注解直接指定本次注入的bean对象
	private Cache cache;	
	@Test
	public void testCache() {
		System.out.println(cache);
	}
}

***@Autowired***由spring框架定义,描述类中属性或相关方法(例如构造方法)。Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,可以按照指定规则为属性赋值(DI依赖注入)。其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。

Spring框架管理Bean对象优势(面试)

Spring 是一个***资源整合框架***(Framework),通过spring可将很多资源(自己写的对象或第三方提供的***对象***,例如连接池等)整合在一起,然后进行***科学应用***,以便更好的对外提供服务
Spring框架可以为由它管理的(Bean)对象提供***懒加载***策略(对象暂时用不到,则无需加载和实例化),作用域(例如singleton-频繁用时可以考虑内存中只有一份,prototype-使用次数少时可以用时创建,不用时销毁),生命周期方法(更好实现对象的初始化和资源销毁),以实现对象对系统资源的有效使用。同时Spring框架还可以***基于用户设计管理对象与对象的依赖关系***,以降低对象与对象之间的直接耦合提高程序的可维护性和可扩展性

拾遗
Spring boot项目启动时,Bean的初始化过程是怎样的?(查找-交给spring管理的,加载,读和存储配置,创建和存储实例对象)
Spring boot 项目启动时,Bean对象的依赖注入过程是怎样的?(标记,查找,注入)
Spring 框架中的Bean对象有什么特性?(延迟加载,作用域,生命周期方法)
Spring Boot项目中支持的配置文件后缀有哪些?(.properties,.yml)
如何理解Spring框架?(资源整合框架,科学应用对象-资源,低耦合)

springboot整合连接池(HikariCP连接池)–默认

HiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号
1 pom.xml文件中添加依赖-mysql数据库驱动依赖和dbc依赖 --Java数据库连接(Java Database Connectivity,简称JDBC)
2 application.properties配置文件配置连接池

spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

3 测试获取连接

@SpringBootTest
public class DataSourceTests {
  @Autowired
	private DataSource dataSource;	
  @Test
	public void testConnection() throws Exception{
		System.out.println(dataSource.getConnection());
	}
   }

springboot整合MyBatis框架

Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。mybatis框架通常会由spring框架进行资源整合,作为数据层技术,实现数据交互操作
1 pom文件中添加mybatis启动依赖

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

//版本有个别依赖需要指定,大部分都不需要指定
2 application.properties文件简易配置

mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.cy=DEBUG

配置mybatis中的sql日志的输出:(com.cy为项目的根包)
3 测试

package com.cy.pj.goods.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
@Mapper 
public interface GoodsDao {
	 @Delete("delete from tb_goods where id=#{id}")
	 int deleteById(Integer id);
}

@Mapper是由MyBatis框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉Spring框架此接口的实现由mybatis创建–即mybatis框架会为该接口创建代理对象(实现类),并将其实现类对象存储到spring容器.

@SpringBootTest
public class GoodsDaoTests {    
   @Autowired
   private GoodsDao goodsDao;  //依赖注入mybatis框架创建的代理对象 
	@Test
	public void testDeleteById() {
		int rows=goodsDao.deleteById(10);
		System.out.println("rows="+rows);
	}
}

或将sql语句写到对应的Mapper.xml映射文件中

int deleteObjects(@Param("ids")Integer... ids);  //mapper接口中

application.properties文件中添加配置 --指定映射文件

 mybatis.mapper-locations=classpath:/mapper/*/*.xml

GoodsMapper.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.cy.pj.goods.dao.GoodsDao">
   <delete id="deleteObjects">
       delete from tb_goods 
       where id in <!-- (1,2,3,4,5) -->
       <foreach collection="ids"
                open="("
                close=")"
                separator=","
                item="id">
               #{id}
       </foreach>
   </delete>
</mapper>

删除测试

@Test
public void testDeleteObjects() {
		int rows=goodsDao.deleteObjects(17,18);
		System.out.println(rows);
}

springboot 整合SpringMVC

MVC(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。目的是通过这样的设计使程序结构更加简洁、直观,降低问题的复杂度,实现***高内聚,低耦合***。各组成部分职责:
View - UI设计人员进行图形界面设计,负责实现与用户交互。
Controller - 负责获取请求,处理请求,响应结果。(controller)–底层就是servlet,貌似不严谨dispatcherServlet是前端控制器而貌似controller调service中的controller可以理解为一个后端控制器…
Model - 实现业务逻辑,数据逻辑实现。(service-dao)
1 pom.xml文件,添加Spring web依赖,Thymeleaf依赖 – Thymeleaf 是一个跟 Velocity、FreeMarker 类似的html模板引擎,它可以完全替代 JSP
Web依赖(提供了Spring MVC核心API,同时会嵌入一个Tomcat服务器)

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

Thymeleaf依赖(提供了一个视图解析器对象以及数据绑定机制)

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

2 application.properties文件添加视图解析器配置(假如没有配置也会默认配置,在默认配置中prefix默认值为classpath:/templates/,后缀默认为.html)

spring.thymeleaf.prefix=classpath:/templates/pages/
spring.thymeleaf.suffix=.html

说明:要基于配置在src/main/resources目录下创建templates/pages目录
3 测试 --Spring MVC 进行入门实践

package com.cy.pj.goods.controller;
@Controller	
@RequestMapping("/goods/")
public class GoodsController {
     @RequestMapping("doGoodsUI")
	 public String doGoodsUI() {
	     return "goods";
}
}

需要在/templates/pages/目录下创建goods.html(至于html中内容任意)
启动服务器(默认项目嵌入的是tomcat),打开浏览器进行访问测试。
http://localhost:8080/goods/doGoodsUI

拾遗
Java中连接池对象的标准API是什么?(DataSource)
Java中标准JDBC API中哪个对象负责与数据库建立连接?(Driver)
@Mapper注解的作用什么?(描述数据层接口,是由mybatis框架定义的规范)
@Mapper 描述数据层接口时,底层会为接口做点什么?(创建实现类,创建实现类对象,并将对象存储到spring容器-bean池。)
STS 工具常用快捷键(alt+/,ctrl+shift+t,ctrl+t,ctrl+o,…)

SpringBoot的综合应用

1 业务需求分析及设计
第一:需求调研 (与软件使用人之间的一个沟通,了解其业务)
第二:需求分析 (对需求调研内容的总结和细化)
第三:原型设计 (是对需求分析结果的更好呈现)
第四:需求评审 (签字确认,确认边界,确定业务模块)

简历:参与了需求调研,需求分析,原型设计,需求评审。

2 系统架构分析及设计
第一:架构模式?(CS/BS)
第二:单体架构,分布式架构,微服务架构?
第三:部署架构?(web服务器一台,数据库服务器一台,…)
第四:系统整体分层架构?(基础设施,操作系统,中间件,应用软件,接入层)
第五:软件应用的分层架构?(表示层,请求响应控制逻辑层,业务处理逻辑层,数据操作逻辑层,数据库)

3 业务代码分析及设计
第一步骤:原型设计(省略)
第二步骤:数据库及表设计并初始化。(基于source指令去实现 )
第三步骤:应用架构设计(MVC)
第四步骤:业务设计,API设计,时序设计?
第五步骤:POJO对象,数据层对象,业务层对象,控制层对象,表示层。

项目示例引入

1 搭建项目初始环境
第一步:初始化数据库数据 --cmd

mysql -uroot -proot
set names utf8
source d:/activity.sql

第二步: 创建SpringBoot maven项目
在这里插入图片描述
第三步:添加项目依赖(MySql,Jdbc API,MyBatis,Spring Web,Thymeleaf)
在这里插入图片描述
第四步:application.properties文件,进行资源配置
1)添加数据源配置(使用内置的HikariCP连接池)
2)添加mybatis配置
3)添加thymeleaf配置
4)添加日志配置

#spring datasource
spring.datasource.url=jdbc:mysql:///dbactivity?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
#spring mybatis
mybatis.mapper-locations=classpath:/mapper/*/*.xml
#spring web
spring.thymeleaf.prefix=classpath:/templates/pages/
#Spring log
logging.level.com.cy=debug

完成项目初始化
2 服务端实现
第一步:定义pojo对象(com.cy.pj.activity.pojo.Activity)
第二步:定义ActivityDao接口及方法
第三步:定义ActivityService接口及实现类
第四步:定义ActivityController对象及url映射
3 客户端实现
第一步:定义activity.html页面
第二步:通过Thymeleaf模板引擎将活动数据呈现在页面上。

拾遗

1 Thymeleaf 是一个跟 Velocity、FreeMarker 类似的html模板引擎,它可以完全替代 JSP --提供了一个视图解析器对象以及数据绑定机制
2 Bootstrap是基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范。
3 easyui是基于jQuery、Angular.、Vue和React的用户界面组件的集合。
easyui提供了构建现代交互式javascript应用程序的基本功能。
使用easyui,您不需要编写许多javascript代码,通常通过编写一些HTML标记来定义用户界面。
完整的HTML5网页框架。
使用easyui开发你的产品时可以大量节省你的时间和规模。
easyui使用非常简单但功能非常强大。
4 Vue 是一套构建用户界面的渐进式框架。
Vue 只关注视图层, 采用自底向上增量开发的设计。方便与第三方库或既有项目整合。
Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
5 Thymeleaf模板引擎常用标签有哪些?(th:each,th:text,th:value,th:href,…)

=====
三者区别
bootstrap
bootstrap是twitter的框架,用来让网站适应不同的屏幕分辨率和设备的 --特点是栅格系统, 使用简单, 专为响应式页面而生,一套代码就可以自适应平板电脑和PC.
bootstrap适合做网站类项目
bootstrap 是css框架

easyui
easyui是让界面看起来更好看些
easyui适合做系统类项目
easyUI IE的兼容性有点问题
easyui是js框架

Vue
特点在于, 在React的基础上扩展:

  1. 数据的双向绑定.数据改,页面改. 页面改, 数据也改.
  2. 页面的呈现快.
  3. 组件化 这和BootStrap这种组件化的概念还有点不同, js测试也变得更专业化了(有点类似junit).
  4. 单html开发. 它的开发模式, 是一个html, 然后不停替换组件对应的js来切换显示效果. html中的共通js和css只需要download一次, 理论上比Iframe页面的呈现更快.
  5. 结合node.js提供的webpack等, 可以进行成体系的打包发布.
    缺点在于, 上手难度比较高, 并且大规模开发的化, 需要有体系化开发的积累. Vue的组件化开发推荐使用Elem
    =====
    5 健康检查 --项目中添加Actuator依赖后即可访问健康检查监控…
    http://localhost/actuator
    假如希望查看更多actuator选项,可以在spring boot中配置文件
    application.properties中添加如下语句:(***生产环境不加!!***)
management.endpoints.web.exposure.include=*

说明:还可以直接在sts工具的Boot Dashboard中选中项目(项目必须已启动),查看其属性(show properties)!!

Lombok插件应用

Lombok是一个第三库,可以基于lombok中提供的API,在程序编译时自动织入一些方法。这样做的话可以简化我们对某些方法的编写,例如,省略pojo类中的set方法,get方法,toString等方法的编写。我们写的java程序可以在编译时,通过lombok自动将这些方法添加到.class文件中,其应用步骤如下:–貌似只是STS中需要***IDEA中直接安装插件后在pom文件中添加Lombok依赖即可使用!!!***
1 添加依赖

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

2 找到下载的lombok-xxx.jar依赖所在的位置。
3 启动操作系统命令行客户端cmd,并切换到lombok-xxx.jar文件所在的目录,然后,利用java –jar 指令启动lombok插件
在这里插入图片描述
4 会弹出选择安装对话框 --然后在弹出的框中选择sts启动执行文件(SpringToolSuite4.exe)进行安装
在这里插入图片描述
5 安装成功以后会出现如下弹出框
在这里插入图片描述
安装成功以后可在STS工具的根目录看到一个lombok.jar文件,同时会在SpringToolSuite4.ini文件的尾部添加lombok.jar文件所在的具体路径
在这里插入图片描述
说明:安装成功以后重启sts工具.(假如安装成功以后再次启动sts,此时无法启动,可能与STS所在目录有关系,可以将安装目录下的lombok.jar文件拷出到特定目录,然后修改SpringToolSuite4.ini文件的最后一行的lombok.jar路径即可,同时在配置文件中也不能有空格)
Lombok 常用注解分析:
@Setter 用于为描述的类生成setter方法,不包含final修饰属性。
@Getter 用于为描述的类生成getter方法。
@ToString 用于为描述的类添加toString方法。
@EqualsAndHashCode 用于为描述的类,生成hashCode和equals方法。
@NoArgsConstructor 用于为描述的类生成无参的构造方法。
@AllArgsConstructor 用于为描述的类生成包含类中所有字段的构造方法。
@Data用于为描述的类生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Slf4J 用于为描述的类添加一个日志属性对象
代码案例分析:

package com.cy.pj.activity.pojo;
@Data
public class Activity {//.class
	private Long id;
	private String title;
	private String category;
	@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")  //指定时间属性格式
	private LocalDateTime startTime;
	@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")
	private LocalDateTime endTime;
	private Short state=1;//1 有效状态
	private String remark;
	private String createdUser;
	private LocalDateTime createdTime;
}
package com.cy.pj.pojo;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@SpringBootTest
public class ActivityTests {
	@Test
	public void testAty01() {
		Activity aty=new Activity();
		aty.setId(10L);
		aty.setTitle("A-Title");
		aty.setCategory("A-Type");
		System.out.println(aty.getId());
		System.out.println(aty.getTitle());
		System.out.println(aty.getCategory());
		log.info(aty.toString());
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"SpringBoot脚手架"是指在初始化一个SpringBoot项目时,提供一套已经配置好的模板或工具,以便于开发者快速搭建项目结构和集成各种组件。脚手架可以包含常用的配置、依赖项和代码片段,使得开发者能够更快地开始开发工作,而不需要从零开始搭建项目。 对于SpringBoot脚手架的整合,一般来说,可以按照以下步骤进行: 1. 确定项目所需的功能和组件,例如数据库连接池,可以选择Druid作为数据库连接池。 2. 在项目的配置文件中,配置相关的依赖和属性,例如Druid的配置项。 3. 在项目的主类中,使用注解或配置类来开启和配置组件的自动装配,例如@EnableAutoConfiguration或@Configuration。 4. 根据项目的需求,编写相应的业务逻辑和代码。 可以参考的示例项目是"springboot-plus",它是一个使用SpringBoot2.2.6、Dubbo2.7.3和zookeeper3.5.3的项目。项目的地址是https://gitee.com/xiandafu/springboot-plus。这个项目可以作为一个参考,帮助你了解如何使用SpringBoot脚手架来搭建和整合项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SpringBoot 项目脚手架](https://blog.csdn.net/liuge36/article/details/103287758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [15款Spring开源项目脚手架,全面&给力(收藏款)](https://blog.csdn.net/qq_42914528/article/details/106990715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值