每日学习Java之一万个为什么

embedded/2025/3/18 13:12:42/

场景启动器:starter

参考常见启动器

默认配置

官网默认值

依赖

见官网 / pom父依赖

注解

  • @SpringBootApplication:启动自动装配,配合 main + SpringApplication.run(.class,args)

  • @SpringBootTest:SpringBoot单元测试注解

  • @ConfigurationProperties:指定前缀读取配置文件对应属性,实现批量读取属性值

  • @Import:导入其他配置类 / 组件

    • 1.硬编码一个数组,汇总导入
    • 2.配合importSelector接口实现类,IO读取外部配置n个组件,然后@Import实现类
  • @Conditional:条件化注入+@Bean 自己从来不用,第三方框架使用

  • @MapperScan:Mybatis提供的Spring扫描注解

SpringApplication.run会干什么

创建IOC容器,初始化

SpringBoot三大优势

  • 简化整合
  • 简化开发
  • 简化配置

Maven插件爆红

logback加载失败位于本地仓库ch/qos目录下

解决办法,清除文件重新加载

boot 父依赖版本设置

SpringBoot Maven Plugin

SpringBoot 整合 MVC

WebMvcConfigurer 配置类 注册自定义拦截器配置拦截地址

SpringBoot 整合 Mybatis

  • 依赖:原先mybatis依赖替换成场景启动器

  • config:yml配置 configuration typeAlias

  • mapper:MapperScan 扫描sql映射文件

  • 接口文件:yml扫描接口

  • 连接:spring配置连接池

  • 调用:service配置mapper属性注入接口名,调用sql方法映射

SpringBoot整合AOP TX

导入依赖即可自动装配
声明式事务相关依赖为 jdbc二非tx

META-INF 包代表什么 SpringBoot三个静态资源包名称

META-INF 目录:主要用于存放 Spring 配置文件、Maven 插件描述符、SPI 服务提供者列表以及其他元数据文件。

public, resources, META-INF/resources , static

SpringBoot整合日志

参考

SpringBoot启动类和其他类有什么不同

启动类以main方法作为项目入口 + @SpringBootApplication注解

什么时候创建IOC容器

SpringApplication.run 启动IOC容器

自定义类必须放在启动类包下吗?

可以手动指定。不过@SpringBootApplication 中的@Component 是默认值,仅扫描所在包及其子包。不过其实按照约定放置Main方法位置就可以。

SpringBoot自动装配

  • 准备好的配置类
  • 固定文件写了配置类清单 文件路径
  • 启动类 @Import + ImportSelector 完成批量导入
  • @Conditional 注解 启动导入的场景(条件化注入)

如何将非启动类下的类加入SpringBootIOC容器

  • 1.将自己的类在启动类中通过@Bean 方法注入
  • 2.在启动类上方通过@Import 注解 导入目标类
  • 3.在@SpringBootApplication中扫描指定包

ImportSelector接口

参考

ImportSelector是SpringBoot中功能性注解类似Enable…格式的核心接口,Enable注解会启动头上的Import,召唤一个神器就是ImportSelector实现类,并对相关配置类进行扫描装配。
类似的还有ImportBeanDefinitionRegister

SpringBoot142个配置类清单路径

java">YOUR_REPOSITROY\org\springframework\boot\spring-boot-autoconfigure\3.0.5\spring-boot-autoconfigure-3.0.5.jar!\META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports

为什么场景启动器不能随便导入,例如Mybatis必须启动数据源

  • 1.导入了场景启动器,就代表导入了数据源类
  • 2.触发数据源自动配置启动加入IOC
  • 3.url driver-class-name等参数为空报错

如果你不想要导入的类被启动,可以在@SpringBootApplication中手动排除

可变参数 … 及其应用场景

概念:可变参数(varargs)是一种在方法声明中允许传递任意数量参数的机制。在 Java 中,可变参数通过在参数类型后面添加三个点 (…) 来表示。这种特性使得方法可以更加灵活地处理不同数量的输入参数

Demo:

java">import java.util.ArrayList;
import java.util.List;public class VarargsExample {// 打印多个数字public static void printNumbers(int... numbers) {System.out.print("Numbers: ");for (int number : numbers) {System.out.print(number + " ");}System.out.println();}// 创建并返回一个列表public static List<String> createList(String... items) {List<String> list = new ArrayList<>();for (String item : items) {list.add(item);}return list;}// 格式化字符串public static String formatString(String template, Object... args) {return String.format(template, args);}// 主方法public static void main(String[] args) {// 打印数字printNumbers(1, 2, 3, 4, 5);// 创建列表List<String> fruits = createList("apple", "banana", "cherry");System.out.println("Fruits: " + fruits);// 格式化字符串String greeting = formatString("Hello, %s! Today is %s.", "Alice", "Monday");System.out.println(greeting);}
}

Mybatis命名空间指定了对应的接口为什么还要用@Mapper或者@MapperScan

为了让Mapper代理对象装配到IOC容器中,使得其他业务可以直接调用代理实例。

Spring Boot 会使用 MapperFactoryBean 来创建 MyBatis 的 Mapper 代理对象,并将其作为 Spring Bean 进行管理

Git为什么需要暂存区

暂存区没有版本概念,用来缓存未完成的版本工作

  • 修改文件:echo “” >> < file>
  • 查看更改: git status
  • 提交暂存: git add . 或 < file> 支持模糊匹配
  • 显示差异: git diff
  • 取消暂存:git reset HEAD
  • 准备msg:git commit -m

git add . 时关于报错 LF will be replaced by CRLF

windows系统换行符问题,可以不用管

IDEA中add暂存了target直接回滚后会删除所有文件

感觉是IDEA GIT插件的问题,如果你没有退出IDEA,可以右键项目找到更改历史取消。
如果你退出重进就没了。
所以还是确认没有问题就Commit吧

.git 文件解密

参考


http://www.ppmy.cn/embedded/173596.html

相关文章

MySQL数据库备份工具:binlog详细操作与实战指南

MySQL的binlog&#xff08;二进制日志&#xff09;是MySQL数据库中非常重要的日志文件&#xff0c;它记录了所有对数据库的修改操作&#xff08;如INSERT、UPDATE、DELETE等&#xff09;。通过 binlog&#xff0c;我们可以实现数据恢复、主从复制、数据审计等功能。因此&#x…

【多线程】单例模式

文章目录 1. 单例模式1.1 什么是单例模式1.2 为什么使用单例模式1.3 实现单例模式1.3.1 饿汉模式1.3.1 懒汉模式 1. 单例模式 1.1 什么是单例模式 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 单例 单…

vue2:el-table列中文字前面加icon图标的两种方式

1、文字前面加icon <el-table-column label="姓名" align="left" prop="nickName"><template #default="{ row }"><i v-if="row.sync" class="el-icon-lock"></i><span>{{ row.nic…

网络安全与七层架构

网络安全与七层架构 随着互联网技术的迅猛发展&#xff0c;网络安全问题日益凸显。网络安全不仅影响到个人用户的信息安全&#xff0c;更是企业及国家安全的重要组成部分。而七层架构&#xff08;OSI模型&#xff09;为网络通信提供了理论支撑&#xff0c;能够有效地帮助我们理…

ImGui 学习笔记(五) —— 字体文件加载问题

ImGui 加载字体文件的函数似乎存在编码问题&#xff0c;这一点可能跟源文件的编码也有关系&#xff0c;我目前源文件编码是 UTF-16。 当参数中包含中文字符时&#xff0c;ImGui 内部将字符转换为宽字符字符集时候&#xff0c;采用的 MultiByteToWideChar API 参数不太对&#…

处理变长的时间序列

pytorch中torch.nn.utils.rnn相关sequence的pad和pack操作 官网…torch.nn.utils.rnn.pack_padded_sequence 知乎pack_padded_sequence 和 pad_packed_sequence 结论 ✅ pack_padded_sequence 是最好的方法&#xff08;避免无效计算&#xff0c;提升性能&#xff09; &#x…

java 动态赋值写入word模板

最近工作中&#xff0c;客户给提供了word模板&#xff0c;要求动态赋值到word模板中&#xff0c;查阅相关资料&#xff0c;最终完成了需求&#xff0c;希望也可以帮助到大家&#xff01; 例如表格如下&#xff1a; 第一步&#xff1a;在word模板中&#xff0c;把需要动态赋值的…

ThreadLocal

多线程和 ThreadLocal 是 Java 并发编程中的两个重要概念&#xff0c;它们在处理线程安全和资源隔离时扮演关键角色。 1. 多线程基础 1.1 什么是多线程&#xff1f; 线程&#xff1a;是操作系统能够调度的最小执行单元&#xff0c;一个进程可以包含多个线程。 多线程&#xf…