当前位置: 首页 > wzjs >正文

铜陵app网站做招聘dedecms 资源类网站

铜陵app网站做招聘,dedecms 资源类网站,网站建设比较好的公司都有哪些,济南网络推广软件公司BeanDefinition 是 Spring Framework 中一个核心的接口,它描述了一个 Bean 的定义。你可以把它看作是 Spring IoC 容器中 Bean 的“蓝图”或“配置元数据”。它包含了 Spring 容器创建、配置和管理 Bean 所需的所有信息。 BeanDefinition 中包含的信息:…

BeanDefinition 是 Spring Framework 中一个核心的接口,它描述了一个 Bean 的定义。你可以把它看作是 Spring IoC 容器中 Bean 的“蓝图”或“配置元数据”。它包含了 Spring 容器创建、配置和管理 Bean 所需的所有信息。

BeanDefinition 中包含的信息:

  • Bean 的类名 (Class Name): Bean 的全限定类名(例如,com.example.MyService)。

  • Bean 的作用域 (Scope): 指定 Bean 的生命周期和可见性。常见的作用域有:

    • singleton (默认): 在 Spring 容器中只有一个 Bean 实例。
    • prototype: 每次请求 Bean 时都会创建一个新的实例。
    • request: 在 Web 应用中,每个 HTTP 请求都有一个 Bean 实例。
    • session: 在 Web 应用中,每个 HTTP 会话有一个 Bean 实例。
    • application: 在 Web 应用中,每个 ServletContext 有一个 Bean 实例。
    • globalSession: 在 Portlet 应用中,每个全局会话有一个 Bean 实例。
    • 自定义作用域
  • Bean 的构造函数参数 (Constructor Arguments): 用于构造函数注入的参数值。

    • 可以通过索引或类型指定参数。
    • 可以是字面量值、对其他 Bean 的引用、集合等。
  • Bean 的属性值 (Property Values): 用于 Setter 方法注入的属性值。

    • 可以是字面量值、对其他 Bean 的引用、集合等。
  • Bean 的依赖关系 (Dependencies): 该 Bean 所依赖的其他 Bean(通过 depends-on 属性或自动装配指定)。

  • Bean 的初始化方法 (Init Method): 在 Bean 实例化和属性设置完成后调用的方法。

    • 可以通过 @PostConstruct 注解指定。
    • 可以通过实现 InitializingBean 接口的 afterPropertiesSet 方法指定。
    • 可以在 XML 配置中使用 init-method 属性指定。
  • Bean 的销毁方法 (Destroy Method): 在 Bean 被销毁之前调用的方法。

    • 可以通过 @PreDestroy 注解指定。
    • 可以通过实现 DisposableBean 接口的 destroy 方法指定。
    • 可以在 XML 配置中使用 destroy-method 属性指定。
  • Bean 是否是懒加载 (Lazy Initialization): 是否在容器启动时立即创建 Bean,还是在第一次请求时才创建(默认为 false,即立即创建)。

  • Bean 的自动装配模式 (Autowiring Mode): 如何自动解析和注入 Bean 的依赖关系。

    • no (默认): 不自动装配。
    • byName: 根据 Bean 的名称自动装配。
    • byType: 根据 Bean 的类型自动装配。
    • constructor: 类似于 byType,但应用于构造函数参数。
    • autodetect: 已过时, Spring 3.0 之前使用.
  • Bean 的名称 (Bean Name/ID): 用于在容器中唯一标识 Bean。

    • 如果没有指定名称,Spring 会自动生成一个唯一的名称。
  • Bean 的别名 (Aliases): 其他可以用来引用该 Bean 的名称。

  • 是否是抽象 Bean (Abstract): 抽象 Bean 不能被实例化,通常用作模板。

  • 是否是单例 (Singleton): 指示 Bean 是否是单例(truefalse,与 scope 属性可能重复)。

  • 是否是原型 (Prototype): 指示 Bean 是否是原型。

  • 是否是主要候选者 (Primary): 当多个 Bean 满足自动装配条件时,优先选择主要候选者。

  • FactoryBean Name: 如果 Bean 是一个 FactoryBean,可以使用 & + Bean 名称来引用 FactoryBean 本身,而不是它创建的对象。

  • 其他元数据: 例如,Bean 的描述信息、角色提示(ROLE_APPLICATIONROLE_SUPPORTROLE_INFRASTRUCTURE)、方法覆盖(MethodOverrides)等。

BeanDefinition 的主要实现类:

  • RootBeanDefinition: 根 Bean 定义,通常用于定义普通的 Bean。
  • ChildBeanDefinition: 子 Bean 定义,继承自父 Bean 定义,可以覆盖或添加一些属性。
  • GenericBeanDefinition: 通用的 Bean 定义,可以独立使用,也可以作为父 Bean 定义。
  • ScannedGenericBeanDefinition: GenericBeanDefinition 的子类,用于通过类路径扫描(@Component@Service 等)生成的 Bean 定义。
  • AnnotatedBeanDefinition: 带有注解信息的 Bean 定义的接口。
    • AnnotatedGenericBeanDefinition: 通用的带有注解信息的 Bean 定义.
    • ConfigurationClassBeanDefinition: 表示由 @Configuration 类中的 @Bean 方法定义的 Bean。

BeanDefinition 的作用:

  • 存储 Bean 的元数据: BeanDefinition 对象保存了创建和配置 Bean 所需的所有信息。
  • 作为 Bean 的模板: Spring 容器根据 BeanDefinition 来创建 Bean 的实例。
  • 支持 Bean 的继承: 子 Bean 定义可以继承父 Bean 定义,减少配置的重复。
  • 支持 Bean 的修改: BeanFactoryPostProcessor 可以在 Bean 实例化之前修改 BeanDefinition

获取 BeanDefinition

可以通过 BeanFactoryBeanDefinitionRegistry 的以下方法获取 BeanDefinition

  • BeanFactory.getBeanDefinition(String beanName)
  • BeanDefinitionRegistry.getBeanDefinition(String beanName)
  • BeanDefinitionRegistry.getBeanDefinitionNames() (获取所有 Bean 定义的名称)
  • BeanDefinitionRegistry.containsBeanDefinition(String beanName)

示例 (编程式创建 BeanDefinition):

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;public class BeanDefinitionExample {public static void main(String[] args) {// 创建 RootBeanDefinitionRootBeanDefinition beanDefinition = new RootBeanDefinition();beanDefinition.setBeanClass(MyService.class); // 设置 Bean 的类beanDefinition.setScope(BeanDefinition.SCOPE_SINGLETON); // 设置作用域beanDefinition.setLazyInit(false); // 设置是否懒加载beanDefinition.setInitMethodName("init"); // 设置初始化方法beanDefinition.setDestroyMethodName("cleanup"); // 设置销毁方法// ... 设置其他属性 ...// 可以将 beanDefinition 注册到 BeanDefinitionRegistry (例如 DefaultListableBeanFactory)// ...}static class MyService {public void init() {System.out.println("MyService initialized");}public void cleanup() {System.out.println("MyService destroyed");}}
}

总结:

BeanDefinition 是 Spring 中描述 Bean 的核心接口。它包含了创建、配置和管理 Bean 所需的所有元数据。 Spring 容器根据 BeanDefinition 来创建 Bean 的实例,并管理它们的生命周期。


文章转载自:

http://sAu3GnZ0.rkrcd.cn
http://jwGKl7pK.rkrcd.cn
http://crzGDKis.rkrcd.cn
http://21pWlXTu.rkrcd.cn
http://276PHMvZ.rkrcd.cn
http://xXP2eGPF.rkrcd.cn
http://vFzBWotp.rkrcd.cn
http://YxlBBOpw.rkrcd.cn
http://Fe6nIKCJ.rkrcd.cn
http://DWEKhRLg.rkrcd.cn
http://yDHLoYQO.rkrcd.cn
http://bE8EOQhx.rkrcd.cn
http://V9Z45OIp.rkrcd.cn
http://OpDssJii.rkrcd.cn
http://FbFcB3tN.rkrcd.cn
http://VP0KdoNL.rkrcd.cn
http://cMAbnl6V.rkrcd.cn
http://ZS25UNta.rkrcd.cn
http://zB6nbc5u.rkrcd.cn
http://IVKECilO.rkrcd.cn
http://9wjKNEm7.rkrcd.cn
http://3uBJ7w8Q.rkrcd.cn
http://nZoEP0DE.rkrcd.cn
http://9y0yur0M.rkrcd.cn
http://6EMjcfJD.rkrcd.cn
http://by2bVWx5.rkrcd.cn
http://gh82hq4e.rkrcd.cn
http://9DEF2Pzk.rkrcd.cn
http://wcNgFbIv.rkrcd.cn
http://Tg7DdFFQ.rkrcd.cn
http://www.dtcms.com/wzjs/614604.html

相关文章:

  • 大型大型网站制作柳州seo关键词优化
  • 购物网站的后台用哪个程序做网站收录好
  • 张掖网站建设推广wordpress 自动缩略图
  • 创意经济型网站建设网站建设技术服务费怎么入账
  • 付费阅读下载网站开发公司网络推广营销
  • 备案网站名称怎么写个人广州排前三的seo公司
  • 公章在线制作网站做不了北京最好设计公司
  • 番禺网站建设效果手机之家对比
  • 网站做关键词注册域名后怎么建网站
  • cnnic可信网站医院网站建设规范
  • 什么犁网站做淘宝门头一起做网店货源
  • 旅游网站建设解决方案vps试用30天
  • 域名备案需要网站搭建完成吗seo推广文章
  • 网站的备案怎么处理织梦手机网站教程
  • 网站建设评估报告公司建设网站需求
  • 网站修改思路陕西省建设监理协会官方网站
  • 网站栏目 英文长治网站建设案例
  • 我的世界官方网站铁马铠怎么做网站主流服务器语言
  • 简述建设一个网站的基本步骤网站建设的评价
  • 网站开发主要做什么建设部网站资质人员查询
  • 调颜色网站北京到安阳高速费多少钱
  • 外贸网站建设soho长春建筑工程网
  • 大连建站模板厂家seo优化按天扣费
  • 做网站需要哪些人员邢台网站设计怎么做
  • 专业做网站公司24小时接单ui设计稿
  • 万站群cms网站建设 长摊 无形资产
  • 长春火车站官网佛山骏域网站建设专家
  • 我自己做个网站怎么做百度网站两两学一做心得体会
  • 微信链接网页网站制作网页设计一个网站
  • 潍坊网站建设自助建站平台电脑零基础培训学校