Java30:SpringBoot3

📅 2026/7/21 17:04:59 👤 编程新知 🏷️ 技术资讯
Java30:SpringBoot3 一SprintBoot3简介到目前为止已经学习了多种配置 Spring 程序的方式。但是无论使用 XML、注解、Java 配置类还是他们的混合用法你都会觉得配置文件过于复杂和繁琐让人头疼!SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是 Spring)大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术!SpringBoot 的主要目标是:为所有 Spring 开发提供更快速、可广泛访问的入门体验。开箱即用设置合理的默认值但是也可以根据需求进行适当的调整提供一系列大型项目通用的非功能性程序(如嵌入式服务器、安全性、指标、运行检查等)约定大于配置甚本不需要主动编写配置类、也不需要 XML 配置文件。总结:简化开发简化配置简化整合简化部署简化监控简化运维。二快速入门程序步骤1创建工程并导入配置和依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤2创建启动类//SpringBootConfiguration 配置类 //EnableAutoConfiguration 自动加载配置 //ComponentScan 默认是当前类所在包 SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args);//自动创建ioc容器启动tomcat服务器软件 } }步骤3创建controllerRestController RequestMapping(boot) public class HelloController { GetMapping(hello) public String hello(){ return hello spring boot3; } }步骤4测试运行步骤3的main方法并在浏览器输入访问地址三统一配置管理1.说明SpringBoot 工程下进行统一的配置管理你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties 或application.yml)中!配置文件应该放置在 Spring Boot 工程的 src/main/resources 目录下。这是因为src/main/resources 目录是Spring Boot默认的类路径(classpath)配置文件会被自动加载并可供应用程序访问。2.properties实例步骤1在resources目录下创建配置文件application.properties#使用springboot提供的配置修改程序参数key是固定的 server.port80 server.servlet.context-path/zhangsan #自定义配置 zzx.info.namezhangsan zzx.info.age18步骤2创建项目并添加依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤3创建controllerpackage com.cn.boot.contrloller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(boot) public class HelloController { //读取配置文件并给属性赋值 Value(${zzx.info.name}) private String name; Value(${zzx.info.age}) private int age; GetMapping(hello) public String hello(){ return hello springboot3; } GetMapping(hello2) public String hello2(){ System.out.println(name); System.out.println(age); return hello2nameage; } }步骤4设置启动类package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤5使用新的地址访问3.yaml实例yaml 语法说明a.数据结构用树形结构呈现通过缩进来表示层级b.连续的项目(集合)通过减号”。”来表示c.犍值结构里面的 key/value 对用冒号 ”:”来分隔。d. YAML 配置文件的扩展名是 yaml 或 ymlyaml配置文件# server.port80 # server.servlet.context-path/zhangsan #yaml 有层次可以继承的配置文件格式 server: port: 80 servlet: context-path: /boot # zzx.info.namezhangsan # zzx.info.age18 # zzx.info.usernameroot # zzx.info.password123456 zzx: info: name: zhangsan #key:空格值 age: 18 username: root password: 1234564.批量读取配置文件批量配置读取 ConfigurationProperties(prefix zzx.info)通用的前缀步骤1创建项目和导入依赖后创建yaml文件 application.yamlzzx: info: name: zhangsan age: 20 hobbies: - sing - jump - basketball - music步骤2创建实体类package com.cn.boot.pojo; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; /* * 读取配置文件方式1Valule * 直接在属性上添加即可 * Valuekey必须写全了 * Value只能读取单个值 * 批量配置读取 ConfigurationProperties(prefix zzx.info)通用的前缀 * 实体类 * 属性名等于最后一个key的值 * 优势1方便不用一个一个读取 * 优势2可以给集合类型赋值 * * */ Component Data ConfigurationProperties(prefix zzx.info) public class User { private String name; private int age; private ListString hobbies; }步骤3创建controller类package com.cn.boot.controller; import com.cn.boot.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(user) public class UserController { Autowired private User user; GetMapping(show) public User show(){ return user; } }步骤4创建启动类package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤5测试5.多环境配置和激活多个yaml 文件格式 application-{key}.yaml激活多配置在application.yaml 加如下配置spring: profiles: active: test,dev #application的{key}值步骤1创建项目并导入依赖同上步骤2创建实体类同上步骤3创建controller类同上步骤4创建启动类同上步骤5创建多个yaml文件application-test.yamlzzx: info: name: zhangsantestapplication-dev.yamlzzx: info: age: 5application.yamlzzx: info: hobbies: - sing - jump - basketball - music spring: profiles: active: test,dev #激活外部配置 application-test|application-dev #外部配置的key和application key 重复外部覆盖内部步骤6测试四整合SpringMvc1.配置服务器端口号和根路径2.修改静态资源访问地址3.配置过滤器步骤1创建项目并添加依赖parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency步骤2创建启动器package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤3创建controllerpackage com.cn.boot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class UserController { GetMapping(hello) public String hello(){ return hello; } }步骤4创建applicaton.yaml 配置文件#配置端口号和根路径 server: port: 8081 servlet: context-path: /boot spring: web: resources: static-locations: classpath:/webapp #改变静态资源访问路径,默认为static文件夹步骤5创建配置类和过滤器实现类package com.cn.boot.config; import com.cn.boot.Intecepter.MyIntercetper; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; Configuration public class MvcConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyIntercetper()); } }package com.cn.boot.Intecepter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; public class MyIntercetper implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(request request , response response , handler handler); return true; } }步骤6测试实现过滤器修改静态资源文件夹五整合Druid连接池整合druid连接池并查询所有雇员信息步骤1创建项目并导入依赖parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version3.0.5/version /parentdependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.28/version /dependency /dependencies步骤2创建启动器package com.cn.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤3创建实体类package com.cn.boot.pojo; import jdk.jfr.DataAmount; import lombok.Data; Data public class Employee { private int empId; private String empName; private Double empSalary; }步骤4创建contrloller类package com.cn.boot.controller; import com.cn.boot.pojo.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private JdbcTemplate jdbcTemplate; GetMapping(list) public ListEmployee findAll(){ String sql select * from t_emp; ListEmployee query jdbcTemplate.query(sql, new BeanPropertyRowMapper(Employee.class)); return query; } }步骤5创建application.yaml配置文件spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/studb?useUnicodetruecharacterEncodingutf-8 server: port: 8082 servlet: context-path: /boot步骤6测试六整合Mybatis步骤1 创建项目并导入依赖parent artifactIdspring-boot-starter-parent/artifactId groupIdorg.springframework.boot/groupId version3.0.5/version /parent dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.20/version /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.28/version /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version3.0.1/version /dependency /dependencies步骤2在配置文件applicaiton.yaml中配置数据库连接信息及mybatis配置信息#druid配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/studb?useUnicodetruecharacterEncodingutf-8 #mybatis配置 #彻底抛弃mybatis-config.xml mybatis: mapper-locations: classpath:/mapper/*.xml #指定mapper.xml文件位置 type-aliases-package: com.cn.boot.pojo configuration: map-underscore-to-camel-case: true #启用驼峰映射 auto-mapping-behavior: full #启用完全自动映射行为 log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl步骤3创建实体类及对应的数据库表package com.cn.boot.pojo; import lombok.Data; Data public class Employee { private int empId; private String empName; private Double empSalary; }create table t_emp(emp_id int auto_increment,emp_name varchar(20),emp_salary double(10,5),primary key(emp_id));insert into t_emp (emp_name,emp_salary)values(zhangsan,2000.00),(students ,3000.00),(wanger,4000.00)步骤4:创建mapper接口package com.cn.boot.mapper; import com.cn.boot.pojo.Employee; import java.util.List; public interface EmpMapper { public ListEmployee querryAll(); }步骤5创建mapper.xml?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN https://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cn.boot.mapper.EmpMapper select idquerryAll resultTypeemployee select * from t_emp /select /mapper步骤6:创建启动类并添加注解MapperScan(com.cn.boot.mapper)扫描mapper接口package com.cn.boot; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; MapperScan(com.cn.boot.mapper) SpringBootApplication public class Main { public static void main(String[] args) { SpringApplication.run(Main.class,args); } }步骤7创建controller类并调用mapper接口实现数据库操作package com.cn.boot.controller; import com.cn.boot.mapper.EmpMapper; import com.cn.boot.pojo.Employee; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private EmpMapper empMapper; GetMapping(list1) public ListEmployee findAll(){ ListEmployee empMappers empMapper.querryAll(); return empMappers; } }步骤8测试七TX和aop整合1.整合事务步骤1创建项目并导入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency步骤2创建service方法并添加事务package com.cn.boot.service; import com.cn.boot.mapper.EmpMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; Service public class EmpService { Autowired private EmpMapper empMapper; Transactional public int delete(){ int rows empMapper.remove(1); System.out.println(rows rows); int i1/0; return rows; } }步骤3创建mapper接口和mapper.xmlpublic interface EmpMapper { int remove(int id); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN https://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cn.boot.mapper.EmpMapper delete idremove delete from t_emp where emp_id#{emp_id} /delete /mapper步骤4创建controller类调用package com.cn.boot.controller; import com.cn.boot.mapper.EmpMapper; import com.cn.boot.pojo.Employee; import com.cn.boot.service.EmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; RestController RequestMapping(emp) public class EmpController { Autowired private EmpService empService; GetMapping(delete) public int delete(){ int rows empService.delete(); return rows; } }步骤6启动类同上测试数据库第一条信息未删除出现异常回滚2.整合aop实现方法执行前打印执行日志步骤1创建项目并导入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-aop/artifactId /dependency步骤2创建增强package com.cn.boot.Advice; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.stereotype.Component; Component Aspect public class LogAdvice { Before(execution(* com..service.*.*(..))) public void before(JoinPoint point){ String simpleName point.getTarget().getClass().getSimpleName(); String method point.getSignature().getName(); System.out.println(simpleName::method开始执行了); } }步骤3启动类服务类方法注释异常控制层和事务增强相同步骤4测试八工程打包和快速部署命令步骤1添加插件build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version3.3.1/version /plugin /plugins /build步骤2: 执行打包在idea点击package进行打包可以在编译的target文件中查看jar包步骤3启动命令和参数java -jar命令用于在Java环境中执行可执行的JAR文件。下面是关于java -jar命令的说明XML命令格式java -jar [选项] [参数] jar文件名1. -Dnamevalue设置系统属性可以通过System.getProperty()方法在应用程序中获取该属性值。例如java -jar -Dserver.port8080 myapp.jar。2. -X设置JVM参数例如内存大小、垃圾回收策略等。常用的选项包括- -Xmxsize设置JVM的最大堆内存大小例如 -Xmx512m 表示设置最大堆内存为512MB。- -Xmssize设置JVM的初始堆内存大小例如 -Xms256m 表示设置初始堆内存为256MB。3. -Dspring.profiles.activeprofile指定Spring Boot的激活配置文件可以通过application-profile.properties或application-profile.yml文件来加载相应的配置。例如java -jar -Dspring.profiles.activedev myapp.jar。步骤4:测试命令参数java -jar springboot-mybatis-07-1.0-SNAPSHOT.jar