01-new SpringApplication

server/2024/12/22 15:14:13/

准备配置Bean

java">@Configuration
public class TestSpringApplication {static class Bean1 {}static class Bean2 {}static class Bean3 {}@Beanpublic Bean2 bean2() {return new Bean2();}@Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {return new TomcatServletWebServerFactory();}}

准备配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bean1" class="com.you.meet.nice.test.web.springboot.TestSpringApplication.Bean1"/></beans>

测试加载BeanDefinition

测试推断应用类型

测试初始化器

测试主类推断

java">System.out.println("1. 从源中获取BeanDefinition");
// 配置类中获取
SpringApplication springApplication = new SpringApplication(TestSpringApplication.class);
// xml中获取
springApplication.setSources(CollUtil.newHashSet("classpath:b01.xml"
));System.out.println("2. 推断应用类型");
Method deduceFromClasspath = WebApplicationType.class.getDeclaredMethod("deduceFromClasspath");
deduceFromClasspath.setAccessible(true);
// 静态方法  不需要对象
System.out.println("\t应用类型:" + deduceFromClasspath.invoke(null));System.out.println("3. 添加初始化器");
springApplication.addInitializers(applicationContext -> {if (applicationContext instanceof GenericApplicationContext) {GenericApplicationContext gac = (GenericApplicationContext) applicationContext;// 这个初始化器被调用时  会注册一个beangac.registerBean("bean3", Bean3.class);}
});System.out.println("4. 添加监听器");
springApplication.addListeners(event -> {System.out.println("\t事件为:" + event.getClass());
});System.out.println("5. 主类推断");
Method deduceMainApplicationClass = SpringApplication.class.getDeclaredMethod("deduceMainApplicationClass");
deduceMainApplicationClass.setAccessible(true);
System.out.println("\t主类为:" + deduceMainApplicationClass.invoke(springApplication));ConfigurableApplicationContext applicationContext = springApplication.run(args);
// 创建ApplicationContext
// 调用初始化器对ApplicationContext做扩展
// ApplicationContext.refreshfor (String beanDefinitionName : applicationContext.getBeanDefinitionNames()) {System.out.println("beanName:" + beanDefinitionName + " 来源=>" + applicationContext.getBeanFactory().getBeanDefinition(beanDefinitionName).getResourceDescription());
}
applicationContext.close();

http://www.ppmy.cn/server/40430.html

相关文章

Leetcode 3148. Maximum Difference Score in a Grid

Leetcode 3148. Maximum Difference Score in a Grid 1. 解题思路2. 代码实现 题目链接&#xff1a;3148. Maximum Difference Score in a Grid 1. 解题思路 这一题的话算是一个脑筋急转弯的题目吧&#xff0c;本质上就是求各个坐标下其右下方矩阵当中除自己外最大的元素是多…

Redis进阶学习

Redis进阶学习 一、Redis事务1.2 Redis监控1.3 Jedis连接1.4 SpringBoot整合1.5 自定义RedisTemple1.6 Redis.conf详解 二、 Redis持久化2.1 RDB2.2 AOF进程 三、Redis发布订阅3.1 Redis主从复制3.2 集群环境配置3.3、复制原理3.4、宕机后主动变为主机3.5、哨兵模式 四、Redis缓…

ID-Aligner:通过奖励反馈学习提升身份保持文本到图像生成的性能

在人工智能领域&#xff0c;文本到图像生成&#xff08;Text-to-Image Generation&#xff0c;简称T2I&#xff09;技术近年来取得了显著进展&#xff0c;特别是在身份保持的图像生成方面&#xff0c;即生成与特定人物参考图像相匹配的新图像。这一技术在AI肖像、广告、动画和虚…

课时122:awk实践_进阶知识_赋值运算

1.2.1 赋值运算 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 awk本质上属于一种编程语言&#xff0c;所以它具有编程语言的一般功能&#xff0c;表达式、流程控制等基本上都在awk中具有想当程度的使用。这一节我们学习awk进…

手工创建 kamailio database tables

有些场景可能需要手工创建 kamailio database table&#xff0c;可参考下面的命令序列&#xff1a; use mysql select user,host from user; drop user kamailio%; flush privileges; drop database kamailio; create database kamailio; create user kamailio% identified by …

【pandas】库中的apply(lambda function ,arix)

pandas.apply() 遍历DataFrame的元素&#xff08;一行或者一列数据&#xff09; 行遍历&#xff1a;axis 1 列遍历&#xff1a;axis 0 基础信息 pandas的apply()方法是用来调用一个lambda函数&#xff0c;让函数对数据对象具有批处理的特性。 pandas支持apply()调用…

Java设计模式-工厂

Java设计模式中&#xff0c;工厂模式主要包括普通工厂模式以及抽象工厂模式&#xff0c;普通工厂模式是用于制造输出不同类型的对象&#xff0c;抽象工厂模式是用于制造输出不同类型的普通工厂&#xff0c;本文主要描述工厂模式的基本用法。 如上所示&#xff0c;使用普通工厂模…

ChatGPT DALL-E绘图,制作各种表情包,实现穿衣风格的自由切换

DALL-E绘图功能探索&#xff1a; 1、保持人物形象一致&#xff0c;适配更多的表情、动作 2、改变穿衣风格 3、小女孩的不同年龄段展示 4、不同社交平台的个性头像创作 如果不会写代码&#xff0c;可以问GPT。使用地址&#xff1a;我的GPT4 视频&#xff0c;B站会发&#…