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

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. 自动配置原理

相关文章:

  • 物联网安全解决方案介绍:有效利用现有的下一代防火墙
  • Volcano 进阶实战 (二) - (网络拓扑/负载感知)调度
  • 反爬加密字体替换机制解析
  • 人形机器人:开启AI与物理世界交互新时代
  • springboot应用使用shell脚本打包成部署压缩包(支持xjar)
  • spring响应式编程系列:异步生产数据
  • 计算机网络的五层结构(物理层、数据链路层、网络层、传输层、应用层)到底是什么?
  • 如何保证线程安全(含典型手段与应用场景)
  • 什么是智能导诊知识库?
  • 平面连杆机构(上)
  • H.264/AVC标准主流开源编解码器编译说明
  • 在分类任务中,显著性分析
  • 【课题推荐】基于场景的改进IMM算法
  • 在线录屏工具(压箱底)-免费高清
  • 为什么vllm能够加快大模型推理速度?
  • SM30 权限检查
  • 实验四 进程调度实验
  • 英语中的介词(preposition)
  • OSPF中DR/BDR的选举
  • 黑马Java基础笔记-4
  • 澎湃思想周报丨数字时代的育儿;凛冬已至好莱坞
  • 教育强国建设基础教育综合改革试点来了!改什么?怎么改?
  • 天津外国语大学原校长修刚突发疾病去世,享年68岁
  • 我国首次实现地月距离尺度卫星激光测距
  • 政治局会议:要提高中低收入群体收入,设立服务消费与养老再贷款
  • 中国气象局:针对山西、广西、陕西启动抗旱四级应急响应