当前位置: 首页 > ds >正文

Springboot基础篇

1.SpringBoot概述

传统方式构建spring的应用程序

导入依赖十分的繁琐,还要解决jar包版本依赖的问题

项目配置繁琐,applicationContext要对所有bean对象先声明再使用

SpringBoot构建应用程序

起步依赖

之前用传统的spring导入jar包主要有四个:core,aop,beans,web,context包

现在只需要引用一个spring-boot-starter-web 就可以将相关依赖的包一起引入。

自动配置 

之前整合mybatis的时候,需要先将SqlSessionFactoryBean,MapperScannerConfiguer

先注入到bean容器中,而现在只需要引入mybatis的启动jar包,boot就会自动将这个两个

对象声明!

其他特性

 2.SpringBoot入门演示

步骤

构建spring-initializr

 

创建结构:

有人会问为啥没有版本号呢。

往前拉,会发现,boot程序的父工程,会统一帮我们管理依赖包的版本号,便于统一管理!

构建Controller中的HelloController

package com.ygd.springbootquickstart.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author ygd*/
@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello word~";}
}

启动项目完成测试(默认地址就是Tomcat服务器的默认地址)

或者用手动创建SpringBoot工程 

很简单就不展示了

3.配置文件

properties配置文件

boot启动的默认配置,包括端口号和路径

我们可以去properties文件中进行端口和路径的修改。

yml/yaml配置文件 

yml配置信息的书写和获取

如何进行一个yml文件的书写

用@Value注解对yml配置文件的信息进行获取

使用@ConfigurationProperties(prefix='前缀')获取yml文件配置信息

SpringBoot引入Mybatis 

我们只需要引入mybaits的起步依赖和驱动jar包,然后在application.yml文件中配置一下连接的信息就可以了。

mybatis的工作原理解释

以这张图为例, controller中会调用MemberService的方法,底层会通过动态代理,创建一个实现了这个Service接口的MemberServiceImpl代理对象,然后又会去调用这个代理对象相关的Dao方法,dao下的MemberDao声明了对数据库表的各种操作方法。再通过动态代理创建一个实现MemberDao接口的对象,方法在xml文件中进行扫描调用。

而下面的MemberMapper.xml文件就是对具体方法的实现。

传统的mybatis引入,要引入mybatis依赖和mybatis与spring整合的依赖,以及一些bean对象的声明。

而现在引入mybatis的起步依赖:会自动的将mybatis和整合的依赖导入,以及三个bean对象的声明注入自动装配好。 

案例:

首先创建相应的数据库和user表

create database if not exists mybatis;use mybatis;create table user(id int unsigned primary key auto_increment comment 'ID',name varchar(100) comment '姓名',age tinyint unsigned comment '年龄',gender tinyint unsigned comment '性别, 1:男, 2:女',phone varchar(11) comment '手机号'
) comment '用户表';insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');

 引入mybatis的驱动依赖,和mybatis的起步依赖。

也可以引入这个mysql的驱动jar包

 配置application.yml文件

配置相应的数据源

 当然在引入Druid数据源jar包后也可以用其他数据库的数据池

项目分部结构图

配置UserMapper

package com.ygd.springbootquickstart.mapper;import com.ygd.springbootquickstart.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;/*** @author ygd* 之前这里可以用xml文件进行一个开发*/
@Mapper
public interface UserMapper {@Select("select * from user where id = #{id}")public User findById(Integer id);
}

userservice

package com.ygd.springbootquickstart.service;import com.ygd.springbootquickstart.entity.User;/*** @author ygd*/
public interface UserService {public User findById(Integer id);
}

UserServiceImpl

package com.ygd.springbootquickstart.service.impl;import com.ygd.springbootquickstart.entity.User;
import com.ygd.springbootquickstart.mapper.UserMapper;
import com.ygd.springbootquickstart.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;/*** @author ygd*/
@Service
public class UserServiceImpl implements UserService {@Resourceprivate UserMapper userMapper;@Overridepublic User findById(Integer id) {return userMapper.findById(1);}
}

Bean的管理

Bean扫描

之前我们可以使用以下的标签和注解来扫描bean注入到容器中

先在只需要写一个boot的启动类就行了。

这个注解只能扫秒启动类所在的包和其子包下的注解声明。

我们也可以加入@ComponentScan(basePackages = "com.ygd") 指定扫描哪些包的类。

 Bean注册

@Bean主要是对第三方库的类的注入

我们可以在启动类里面这么写,这个Country是引入的第三方库的jar包下的类。 

可以通过类型获取Contry.class或者通过名字:默认的名字是类名小写!!

建议别写在启动类里面,写入到一个专门导入第三库类的类

用@Import注解手动注入:即时这个配置类可能不在启动类包下

我们也可以实现ImportSelector接口:然后将要扫描的所有的配置类都写在这个方法里面,启动类启动的时候,会去找到实现这个接口的类,然后将里面所有的配置类进行一个自动的注入。

 

自定义组合注解

@SpringBootApplication就是个组合注解(他有很多注解)。

自定义注解:

首先要写入两个元注解

@Target(ElementType.type):用来修饰注解类的。

@Rentention:下图是 RetentionPolicy.RUNTIME:编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 会保留注解. 程序可以 通过反射获取该注解

 

 4. 自动配置原理

http://www.xdnf.cn/news/2419.html

相关文章:

  • 牛客:链表内指定区间反转
  • 在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese
  • 前端自定义文本生成文件下载
  • 第八章 IO流
  • 树状数组详解
  • ZBrush2025建模软件下载 ZBrush中文版免费下载 ZBrush版本大全
  • 数据预处理中比较重要的知识点
  • 【白雪讲堂】
  • CPU与GPU的功能与区别解析
  • 【LCMM】纵向轨迹模型,组轨迹模型
  • c++学习小结
  • AUTOSAR图解==>AUTOSAR_SWS_StandardTypes
  • PotPlayer,强大的高清视频播放器
  • 使用 Spring Boot 进行开发
  • TypeScript基础数据类型详解
  • 多数元素(简单)
  • VSCode远程登录云服务器并设置免密登录全攻略
  • java每日精进 4.26【多租户之过滤器及请求处理流程】
  • llama factory怎么命令行推理图片
  • java—基础
  • A. Everybody Likes Good Arrays!
  • Java 程序运行和类路径处理
  • map和set的应用总结
  • MySQL 常用语句教程
  • Python数值类型修炼手册:从青铜到王者的进阶之路
  • Buffer Pool是什么,有什么作用
  • 【MATLAB第118期】基于MATLAB的双通道CNN多输入单输出分类预测方法
  • Android学习总结之协程对比优缺点(协程一)
  • 腾讯云智三道算法题
  • 侵水防触电的原理是什么? 侵水防触电算先进技术吗?-优雅草卓伊凡