首页 > 其他分享 >BeanDefinition

BeanDefinition

时间:2023-08-26 11:32:24浏览次数:36  
标签:定义 Bean context BeanDefinition class beanDefinition

BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型 scope,表示Bean作用域,单例或原型等 lazyInit:表示Bean是否是懒加载 initMethodName:表示Bean初始化时要执行的方法 destroyMethodName:表示Bean销毁时要执行的方法 还有很多... 在Spring中,我们经常会通过以下几种方式来定义Bean:

bean标签 <bean /> @Bean @Component(@Service,@Controller) 这些,我们可以称之 申明式定义Bean 。

我们还可以 编程式定义Bean ,那就是直接通过BeanDefinition,比如:


AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

// 生成一个BeanDefinition对象,并设置beanClass为User.class,并注册到ApplicationContext中
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(User.class);
context.registerBeanDefinition("user", beanDefinition);

System.out.println(context.getBean("user"));

我们还可以通过BeanDefinition设置一个Bean的其他属性

beanDefinition.setScope("prototype"); // 设置作用域
beanDefinition.setInitMethodName("init"); // 设置初始化方法
beanDefinition.setLazyInit(true); // 设置懒加载

和申明式事务、编程式事务类似,通过,@Bean,@Component等申明式方式所定义的Bean,最终都会被Spring解析为对应的BeanDefinition对象,并放入Spring容器中

标签:定义,Bean,context,BeanDefinition,class,beanDefinition
From: https://blog.51cto.com/u_16164025/7241824

相关文章

  • 解析BeanDefinitionRegistry与BeanDefinition合并
    本文分享自华为云社区《Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析》,作者:砖业洋__。1.什么是BeanDefinitionRegistry?BeanDefinitionRegistry是一个非常重要的接口,存在于Spring的org.springframework.beans.factory.support包中,它是Spring中注......
  • Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析
    1.什么是BeanDefinitionRegistry?  BeanDefinitionRegistry 是一个非常重要的接口,存在于 Spring 的 org.springframework.beans.factory.support 包中,它是 Spring 中注册和管理 BeanDefinition 的核心组件。 BeanDefinition。在 Spring 中,一个 Bean 就是一个被 Sp......
  • 引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionExceptio
    引入feign注入报错org.springframework.beans.factory.NoSuchBeanDefinitionException解决[172.16.22.215]out:Causedby:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'com.test.mydock.api.FeignRemoteTestService�......
  • SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
    要达到的目的:将某个包下使用了某个自定义注解(比如@MyClassMapper)的类注册到Spring容器。一、自定义注解:packagecom.example.demo.service;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)publ......
  • BeanDefinition解密:构建和管理Spring Beans的基石
    本文分享自华为云社区《Spring高手之路11——BeanDefinition解密:构建和管理SpringBeans的基石》,作者:砖业洋__。BeanDefinition是Spring中一个非常重要的概念,它包含了Spring容器用于创建、配置Bean所需的所有信息。理解BeanDefinition可以帮助我们深入掌握Spring的内部工作机......
  • org.springframework.beans.factory.parsing.BeanDefinitionParsingException
    org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configurationproblem:Failedtoimportbeandefinitionsfromrelativelocation[spring-controller.xml]Offendingresource:classpathresource[applicationContext.xml];nestedexcep......
  • 使用ImportBeanDefinitionRegistrar处理自定义注解将类注册到容器中
    START两个自定义注解:@Documented@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Import(LogRegistry.class)public@interfaceEnableLog{StringbasePackage()default"";}该注解的作用是扫描指定的basePackage目录中使用了@Log注解的类,并将这......
  • Spring 源码解析 - xml解析封装BeanDefinition(1)
    -  XML解析封装BeanDefinition  断点在 DefaultListableBeanFacy,registerBeanDefinition()二 如果给属性赋值 三 各种postprocessor       ##2、Spring套路点-1、AbstractBeanDefinition看看何时给容器中注入了什么组件-2、BeanFactory让......
  • spring冷门小知识点--AbstractBeanDefinition的lazyInit属性
    1.含义默认情况下,spring启动时会将所有单例bean初始化,然后放到singletonObjects(ConcurrentHashMap)(位于类DefaultSingletonBeanRegistry)里面;但有时候在一些业务场景......
  • 深入理解Spring的Bean定义对象BeanDefinition-面试重点
    Spring注解这篇文章中讲到了Spring的组件,组件加载到Spring容器中也就是Spring容器中的Bean对象,想要更深理解Spring中的Bean对象,那对这个BeanDefinition一定要有深入的了解,......