# Java根据Bean名称获取Bean对象的全面分析
在Java的企业级开发中,依赖注入和控制反转(IoC)是两个非常重要的概念。Spring框架作为最流行的Java应用框架,在这方面表现尤为突出。通过在Spring容器中注册Bean,并使用其名称,我们可以轻松获取这些Bean的实例。本文将探讨如何根据Bean的名称获取Bean对象,并提供相应的代码示例、序列图和状态图。
## 1. Bea
0 前言Spring的核心就是提供了一个IoC(Inversion of Control)容器,它可以管理所有轻量级的JavaBean组件,提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP支持,以及建立在AOP基础上的声明式事务服务等。本本主要展示IoC容器对JavaBean装配,以及依赖的注入的几种方式。看本文之前请务必学习JAVA基础。1 传统的实现方式先来看下面这个例子:clas
转载
2024-06-07 10:54:23
78阅读
Spring IoC 容器中,指定名称的方式:xml <bean> 配置 id 或 name注解指定 nameBeanDefinition 指定 nameregister Bean 指定 beanName 参数这些都比较好理解。 那如果未指定 Bean 的名称,Bean 会被如何命名呢?常见的 Bean 命名规则如下:xml <bean> 未指定 id、name,
转载
2023-11-26 09:56:46
198阅读
根据Bean注册的名称获取Bean对象一个通过Bean名称获取Bean的对象实例的一个类,现在pt
原创
2022-08-05 09:59:56
542阅读
本章我们继续实战spring的扩展能力,通过自定义BeanFactoryPostProcessor接口的实现类,来对bean实例做一些控制;BeanFactoryPostProcessor接口简介spring容器初始化时,从资源中读取到bean的相关定义后,保存在beanFactory的成员变量中(参考DefaultListableBeanFactory类的成员变量beanDefinitionMa
转载
2024-06-17 09:58:33
78阅读
在SpringBoot中,Bean的懒加载是指Spring容器在第一次实际使用Bean时才创建该Bean实例,而不是在容器启动时立即创建。这种机制可以减少启动时间,尤其是当有些Bean创建成本较高或者不经常使用时。以下是在SpringBoot中实现Bean懒加载的几种方法:使用@Lazy注解你可以在Bean定义上使用@Lazy注解来指定该Bean应该懒加载。这意味着Bean在需要时才会被创建,而不
在 Spring 的 IOC 容器里配置 Bean <bean id="helloWorld" class="com.xiya.spring.beans.HelloWorld">
<property name="name" value="lgh"/>
</bean>
在 xml 文件中通过 bean 节点来配置 bean
id:Bean
转载
2024-03-28 13:36:47
73阅读
public class AppUtil implements ApplicationContextAware { private static ApplicationContext
原创
2023-03-06 10:29:41
63阅读
@Configuration该注解作用在类上,告诉Spring这是一个配置类,与XML效果是一样的,我们接下来所使用的注解,需要在配置类中使用。ApplicationContext ac = new AnnotationConfigApplicationContext(MainConfig.class); @Bean将@Bean放在方法上使用,能够将Bean加入到IOC容器中,其返回值代表Bean
转载
2023-11-12 16:19:00
124阅读
这里需要注意的是,该blog里实际上是在讲Spring是如何把定义在资源文件(主要为xml)中的bean定义,加载成实际实例的。 博客中是从XmlBeanDefinitionReader做为起点,然后追溯到AbstractBeanDefinitionReader,然后追溯到资源解析,走到BeanDefinitionReaderUtils.registerBeanDefinition,然后回归
转载
2023-12-07 10:52:32
22阅读
spring bean加载顺序spring配置文件基于xml的bean spring配置文件spring framework提供多种生成bean的方式:基于xml配置文件基于注解,如@Component,@Service,@Controller,@Bean等高版本提供Groovy的dsl声明bean,比如Grails 框架用的就是这种<beans>
<import re
转载
2024-04-17 14:00:51
35阅读
前言本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案。方式1:使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致XMl配置文件膨胀 ,不利于对象管理。 <bean id="xxxx" class="xxxx.xxxx"/>
转载
2024-03-16 09:42:11
41阅读
上篇说到了通过CglibSubclassingInstantiationStrategy类的instantiate方法创建对象实例,然后使用BeanWrapperImpl对象进行包装,初始化后返回。CglibSubclassingInstantiationStrategy类继承自SimpleInstantiationStrategy,而instantiate调用的就是父类SimpleInstant
01、探索springboot的加载bean几种方式springboot启动类上的注解是一个复合注解:@SpringBootConfiguration
配置类 + @Bean配置类作用:方便扩展、方便集成,不受包约束。@EnableAutoConfiguration
springboot内部的starter加载的原理
内部其实:配置+@Bean@ComponentScan (
转载
2023-11-02 08:00:43
96阅读
前言以前学习Spring框架的时候,总结了几种Bean的加载方式,不过应该还有其它的加载方式,以下八种并不是全部,但也足以用来做很多事情了。注意以下是Spring中Bean的加载方式,不是SpringBoot,但其中的很多东西是相通的,尤其是Bean的注入方式、适用场景等,在本文中也有介绍的。1.xml+<bean>被配置的bean需要有无参数的构造函数<?xml v
转载
2023-11-04 15:10:21
63阅读
SpringMVC框架开发中可能会在Filter或Servlet中用到spring容器中注册的java bean 对象,获得容器中的java bean对象有如下方法
Spring中的ApplicationContexts可以被限制在不同的作用域。在web框架中,每个DispatcherServlet有它自己的WebApplicationContext,它包含了Dispatche
bean的加载-配置文件的解析spring的启动流程部分内容比较多,因此在之前先做了以下这些源码分析,这些要简单些。spring-webmvc启动流程spring-webmvc请求处理流程spring-webmvc请求处理流程-返回值处理现在再慢慢来解决spring核心的启动流程。spring是个包含很多个模块的框架。其中核心部分有四个,bean,core,context和Expresion La
转载
2024-07-05 13:17:55
62阅读
1.转换对应beanName这里传入的name可能不是beanName,传入的name可能是别名,也可能是FactoryBean。解析过程就是去除FactoryBean的前缀修饰符&,如果是别名alias,则找到最终的beanName。2.尝试从缓存中加载单例单例在Spring的同一个容器内只会被创建一次,后续再获取bean,则是直接从单例缓存中获取。当然这里是尝试加载,首先尝试从缓存中加
转载
2023-08-31 20:19:13
103阅读
原文作者:RunAlgorithm 1. 概述Spring 作为 Ioc 框架,实现了依赖注入,由一个中心化的 Bean 工厂来负责各个 Bean 的实例化和依赖管理。各个 Bean 可以不需要关心各自的复杂的创建过程,达到了很好的解耦效果。我们对 Spring 的工作流进行一个粗略的概括,主要为两大环节:解析:读 xml 配置,扫描类文件,从配置或者注解中获取 Bean 的定义信息,注
转载
2023-06-25 23:21:07
269阅读
宏观地说,Bean 加载流程大致有三个阶段,分别是实例化 createBeanInstance() 、属性填充 populateBean() 和 初始化 initializeBean(),当 Bean 加载流程执行完毕,Bean 才具备使用条件!对 Bean 加载流程的探索是一段非常煎熬的旅程,你准备好了吗?1 写在前面为了让 Spring IoC 容器正确地完成 Bean 加载流程,必须要有一个
转载
2023-08-31 20:16:10
107阅读