ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
spring ioc容器管理着众多的beans。这些bean是根据配置元数据创建的,如xml格式的`<bean/>`元素。 在容器中,这些bean定义表示为BeanDefinition对象,包括以下元数据: * 包限定的类名称:通常是定义bean的实现类 * bean行为配置元素,说明bean在容器中的行为状态(范围,生命周期,回调等) * 引用其他bean,这些bean叫做协作者或依赖 * 新创建对象的其他设置,如管理连接池的bean,设置连接的数量或大小限制 这些元数据转成一组属性构成bean定义。 *表1 bean定义* | 属性 | 说明 | | --- | --- | | class | [实例化bean](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-class) | |name|[命名bean](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-beanname)| |scope|[bean范围](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-scopes)| |constructor arguments|[构造参数](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-collaborators)| |properties|[属性](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-collaborators)| |autowiring mode|[自动装配](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-autowire)| |lazy-initialization mode|[懒加载模式](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-lazy-init)| |initialization method|[实例方法](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-lifecycle-initializingbean)| |destruction method|[销毁方法](https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html#beans-factory-lifecycle-disposablebean)| 容器外部创建的对象也可以注册到容器,通过ApplicationContext的方法getBeanFactory()获得BeanFactory的实现DefaultListableBeanFactory。再通过DefaultListableBeanFactory的方法registerSingleton(..) 和registerBeanDefinition(..)注册对象。然而,一般应用程序都使用元数据来定义bean。 > 手动创建的对象要尽早注册到容器中,以便容器在装配和自我检查时合理评估它们。虽然支持某些程度的重写配置和实例,但是在运行时注册新bean是不支持的,并且可能导致并发访问的异常或bean状态不一致