springBoot搭建

news2024/11/20 11:38:59

这里写目录标题

    • 一、在学习spring Boot之前我们来回顾一下Spring
    • 二、Spring Boot介绍
  • 三、Spring Boot开发环境搭配
  • 四、Spring Boot核心
  • 五、Spring Boot添加模块
  • 六、Spring Boot新注解介绍

一、在学习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开发环境搭配

  1. 官网配置生成模板

网址https://start.spring.io/
选择完成点击Generate
2. 在线下载后, 解压修改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会根据项目里依赖的相关组件, 启动时, 创建并且初始化

  2. 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">
    <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文件中的内容读取到,且赋给相应属性方法上加
@ConfigurationProperties(prefix = “spring.datasource”)可以将application.xml文件中的内容读取到,且赋给相应属性方法属性上加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wireshark 解密https 数据

默认情况下 wireshark 抓到的https 数据包都是加密后的&#xff0c;无法展示明文内容 方式一 -SSLKEYLOGFILE 变量方式 【推荐&#xff0c;适用各种情况】 配置环境变量 浏览器在访问https 站点的时候会检测这个SSLKEYLOGFILE 变量&#xff0c;如果存在&#xff0c;则将https…

SpringCloud Nacos实战应用

目录 1 Nacos安装1.1 Nacos概要1.2 Nacos架构1.3 Nacos安装1.3.1 Nacos Derby安装1.3.2 Nacos MySQL版安装1.3.3 Docker 安装Nacos 2 Nacos功能应用2.1 Nacos服务注册与发现2.2 负载均衡2.3 配置中心2.4 灰度发布 3 Nacos集群3.1 集群架构3.2 Nacos集群部署3.3 客户端接入Nacos…

c# 依赖注入

依赖注入 文章目录 依赖注入一、.net core主要提供了三种依赖注入的方式二、权重三、如果我们需要注入的对象很多怎么办 一、.net core主要提供了三种依赖注入的方式 AddTransient瞬时模式&#xff1a; 每次请求&#xff0c;都获取一个新的实例。即使同一个请求获取多次也会是…

2022年度互联网平均薪资出炉!高到离谱!

近期&#xff0c;国家统计局发布2022年平均工资数据&#xff0c;互联网行业薪资再次成为大家关注的焦点。 在2022年分行业门类分岗位就业人员年平均工资中&#xff0c;信息传输、软件和信息技术服务业的薪资遥遥领先其他行业&#xff0c;为全国平均薪资水平的 1.78 倍&#xf…

devfreq

devfreq 是指频率电源可以动态调节的设备&#xff0c;可以添加不同设备及不同govvernor ; devfreq 框架和opp(operating performance point) 频率电源对 devices driver 通过 devfreq profile 交互 devfreq_dev_profile include/linux/devfreq.h devfreq_governor 与 dev…

如何用二极管实现不同电压的输出?

利用二极管的单向导电性可以设计出好玩、实用的电路。本文分析限幅电路和钳位电路&#xff0c;是如何用二极管来实现的。 限幅电路 如下图所示&#xff0c;当在正半周期&#xff0c;并且VIN大于等于0.7V&#xff0c;二极管正向导通。此时&#xff0c;VOUT会被钳位在0.7V上。 …

C++11:右值引用 -- 移动构造和移动赋值

目录 一. 左值引用和右值引用的概念和性质 1.1 什么是左值引用和右值引用 1.2 左值引用和右值引用的性质 二. 移动构造和移动赋值 2.1 左值引用的缺陷 2.2 临时对象返回减少拷贝的问题&#xff08;移动构造和移动赋值&#xff09; 2.3 C11 STL容器接口的一些变化 三. 完…

【C++进阶之路】手把手教你使用string类的接口

文章目录 前言基本认识基本使用 一.构造函数默认构造函数拷贝构造函数其它构造函数①string(const char* s)②string(size_t n, char c)③string (const string& str, size_t pos, size_t len npos) 二.容量接口①size与length②max_size③capacity④empty⑤clear⑥revers…

Elastic Learned Sparse Encoder 简介:Elastic 用于语义搜索的 AI 模型

作者&#xff1a;Aris Papadopoulos, Gilad Gal 寻找意义&#xff0c;而不仅仅是文字 我们很高兴地与大家分享&#xff0c;在 8.8 中&#xff0c;Elastic 提供开箱即用的语义搜索。语义搜索旨在根据文本的意图或含义进行搜索&#xff0c;而不是词汇匹配或关键字查询。与传统的…

华为云服务器租用费用及CPU性能(1核2G/2核4G/4核8G)

华为云HECS云服务器即云耀云服务器&#xff0c;类似于阿里云和腾讯云的轻量应用服务器&#xff0c;HECS云服务器1核2G配置39.02元一年、2核4G配置99元一年、4核8G配置69.94元3个月&#xff0c;华为云百科分享华为云HECS云服务器租用费用及CPU性能详解&#xff1a; 目录 华为云…

图解LeetCode链表题

&#x1f490;文章导读 本篇文章主要详细的用图解的方式为大家讲解了简单程度的链表题&#xff0c;如果题中有错误的地方&#xff0c;还麻烦您在评论区指出&#xff0c;你的意见就是我最大的进步&#xff01;&#xff01;&#xff01; &#x1f490;专栏导读 &#x1f934;作者…

什么是数字化?企业为什么要数字化转型

一、什么是数字化&#xff1f; 什么是数字化&#xff1f;在我理解&#xff0c;数字化是一个基于时代科技发展所产生的概念&#xff0c;首先它是一个工具&#xff0c;在企业的经营发展中将信息技术融入到传统的企业模式中&#xff0c;起到了转型的作用。 其次数字化转型是企业…

国产易灵思FPGA的FIFO应用详解

一、软件设置界面 FIFO&#xff08;First In First Out&#xff0c;即先入先出&#xff09;&#xff0c;是一种数据缓冲器&#xff0c;用来实现数据先入先出的读写。与 ROM 或 RAM 的按地址读写方式不同&#xff0c; FIFO 的读写遵循“先进先出”的原则&#xff0c;即数据按顺…

关于this->moveToThread(this)——QtWidgets

前言 官方关于QThread的用法有两种&#xff1a;一是子类QThread&#xff0c;并重新实现run&#xff1b;二是使用QObject::MoveToThread&#xff0c;通过信号槽在不同的线程内通信。 最近看到了一种写法&#xff0c;就是将两者融合就是子类QThread&#xff0c;然后this->mo…

【小程序】封装时间选择组件:用单元格van-cell和插槽slot,包括起始时间和终止时间

效果 可以选择起始时间和终止时间&#xff0c;并显示。 时间选择器放在van-cell的value插槽中。 用的库&#xff1a; https://vant-contrib.gitee.io/vant-weapp/#/home https://dayjs.fenxianglu.cn/category/ 用的组件&#xff1a;Cell单元格、DatetimePicker时间选择、Pop…

【Unity编辑器扩展】(二)PSD转UGUI Prefab, 图层解析和碎图导出

书接上回&#xff1a;【Unity编辑器扩展】(一)PSD转UGUI Prefab, Aspose.PSD和Harmony库的使用_TopGames的博客-CSDN博客 工具使用预览&#xff1a; 工具目标&#xff1a; 1. 实现将psd解析生成为UI预制体&#xff0c;并导出UI图片。需支持UGUI和TextMeshProGUI, 如Button、To…

文心一言 VS 讯飞星火 VS chatgpt (22)-- 算法导论4.2 2题

二、为Strassen算法编写伪代码。 文心一言&#xff1a; Strassen算法是一种用于矩阵乘法的算法&#xff0c;它的核心思想是通过不断将原始矩阵分割成较小的子矩阵来实现高效的乘法运算。以下是Strassen算法的伪代码&#xff1a; function Strassen(A, B): if A[0][0] 0 or…

优化|数学软件是如何求解线性方程Ax=b ?

编者按 对于大家来说&#xff0c;我们从学会多项式开始就得和求解矩阵方程打交道。大学之前靠手算&#xff0c;到了大学阶段我们学会了使用科学计算软件&#xff0c;然后只需要输入简单的一行指令 x A \ b x A \backslash b xA\b&#xff0c;就可以轻轻松松求解方程组 A x …

html实现酷炫科技风大屏风格模板(附源码)

文章目录 1.设计来源1.1 大屏主界面1.2 弹框界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130870963 html实现酷炫科技风大屏风格模板源码 &#xff0c;html大屏源码…

docker容器postgres数据导出命令及还原数据命令

参考资料 docker控制postgers容器导入导出数据_docker 导出数据库_奔跑的痕迹的博客-CSDN博客 --进入容器 docker exec -it 容器名称或容器id /bin/bash 以下命令是在进入容器执行的 --导出单张表的备份语句&#xff08;copy模式&#xff09; pg_dump -h 127.0.0.1 -U …