马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
config
ApplicationBaseAutoConfiguration.java(应用底子主动装配)
- @Bean
- @ConditionalOnMissingBean//只有当 Spring 容器中不存在相同类型的 Bean 时,才会创建这个 Bean。
- public ApplicationContextHolder congoApplicationContextHolder() {
- return new ApplicationContextHolder();
- }
- @Bean
- @ConditionalOnMissingBean
- public ApplicationContentPostProcessor congoApplicationContentPostProcessor(ApplicationContext applicationContext) {
- return new ApplicationContentPostProcessor(applicationContext);
- }
- @Bean
- @ConditionalOnMissingBean
- @ConditionalOnProperty(value = "framework.fastjson.safa-mode", havingValue = "true")//该注解用于条件加载 Bean,它会检查配置文件中的 framework.fastjson.safa-mode 属性是否为 true。如果配置了该属性且值为 true,则会创建 FastJsonSafeMode 实例。
- public FastJsonSafeMode congoFastJsonSafeMode() {
- return new FastJsonSafeMode();
- }
复制代码 是应用底子主动装配配置类
作用:其主要目的是根据条件为 Spring 容器注册一些须要的 Bean。通过一些注解,如 @ConditionalOnMissingBean 和 @ConditionalOnProperty,该配置类确保只在满足特定条件时创建对应的 Bean。
知识点
- @ConditionalOnMissingBean//只有当 Spring 容器中不存在相同类型的 Bean 时,才会创建这个 Bean。
复制代码- @ConditionalOnProperty(value = "framework.fastjson.safa-mode", havingValue = "true")//该注解用于条件加载 Bean,它会检查配置文件中的 framework.fastjson.safa-mode 属性是否为 true。如果配置了该属性且值为 true,则会创建 FastJsonSafeMode 实例。
复制代码 constant
FilterOrderContent
- /**
- * 用户信息传递过滤器执行顺序排序
- */
- public static final int USER_TRANSMIT_FILTER_ORDER = 100;
复制代码 UserContent
用户常量
init
ApplicationContentPostProcessor(初始化后置处理处罚器)
ApplicationContentPostProcessor 类实现了 ApplicationListener<ApplicationReadyEvent>,其目的是监听 Spring Boot 应用中的 ApplicationReadyEvent 事件。这个事件在应用完全启动并且 Spring 上下文预备好处理处罚请求时触发。
- public class ApplicationContentPostProcessor implements ApplicationListener<ApplicationReadyEvent> {
复制代码
该类通过构造方法获取 ApplicationContext,它代表 Spring 的 IoC 容器,管理所有的 Bean
- private final ApplicationContext applicationContext;
复制代码- /**
- * 执行标识,确保Spring事件 {@link ApplicationReadyEvent} 有且执行一次
- */
- private final AtomicBoolean executeOnlyOnce = new AtomicBoolean(false);
复制代码 事件通过publishEvent()方法发布,传入的参数是触发事件的对象
- @Override
- public void onApplicationEvent(ApplicationReadyEvent event) {
- if (!executeOnlyOnce.compareAndSet(false, true)) {
- return;
- }
- applicationContext.publishEvent(new ApplicationInitializingEvent(this));//事件通过此方法发布,传入的参数是触发应用的对象
- }
复制代码
ApplicationInitializingEvent(初始化事件)
- 这个类继承了ApplicationEvent,这是Spring框架用于事件发布和监听的基类
- ApplicationEvent是Spring的核心事件模型,允许在应用程序上下文中发布事件并使监听器处理这些事件。
复制代码- public class ApplicationInitializingEvent extends ApplicationEvent {
复制代码- //构造方法需要传递一个 source 对象,表示该事件发生的源对象。通常这个对象可以是触发事件的组件或上下文(例如,应用上下文或服务类)。
- //*调用父类 ApplicationEvent 的构造方法将 source 传递给父类,确保事件对象的初始化是基于标准 Spring 事件机制。
- public ApplicationInitializingEvent(Object source) {
- super(source);
- }
复制代码- public ApplicationInitializingEvent(Object source) {
- super(source);
- }
复制代码 safa
ApplicationContextHolder.java(Bean捕手)
实现了ApplicationContextAware接口用来持有和操作 Spring 容器的AplicationContext。通过这个类,你可以在整个应用程序中方便地访问 Spring 容器中的 Bean。
- public class ApplicationContextHolder implements ApplicationContextAware {
- private static ApplicationContext CONTEXT;
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- ApplicationContextHolder.CONTEXT = applicationContext;
- }
复制代码 通过实现 ApplicationContextAware 接口,当 Spring 容器初始化时,会主动将 ApplicationContext 传递给 ApplicationContextHolder,并将其存储在静态变量 CONTEXT 中。
这意味着 ApplicationContextHolder 持有了整个 Spring 应用上下文,允许在应用的任何地方通过静态方法获取 Spring 容器中的 Bean。
- public static <T> T getBean(Class<T> clazz) {//通过类型获得bean
- return CONTEXT.getBean(clazz);
- }
- /**
- * Get ioc container bean by name.
- */
- public static Object getBean(String name) {//通过名称获取bean
- return CONTEXT.getBean(name);
- }
- /**
- * Get ioc container bean by name and type.
- */
- public static <T> T getBean(String name, Class<T> clazz) {//通过名字与类型
- return CONTEXT.getBean(name, clazz);
- }
- /**
- * Get a set of ioc container beans by type.
- */
- public static <T> Map<String, T> getBeansOfType(Class<T> clazz) {//通过一组特定的数据
- return CONTEXT.getBeansOfType(clazz);
- }//获取一个包含bean名字与实例的map集合
复制代码- public static <A extends Annotation> A findAnnotationOnBean(String beanName, Class<A> annotationType) {
- return CONTEXT.findAnnotationOnBean(beanName, annotationType);
- }//查找bean上的注解
复制代码
- public static ApplicationContext getInstance() {
- return CONTEXT;
- }//获取ApplicationContext实例
复制代码 Singlegon.java(单例对象容器)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |