Solon2 开发之IoC,十、Bean 在容器的两层信息
1、剖析 Bean 的装包与注册过程
比如,用配置器装配一个 Bean (本质是装配出一个 BeanWrap,并自动注册到容器):
@Configuration
public class Config{
//同时以名字和类型进行注册 //支持类型或名字注入
@Bean(name="demo", typed=true)
public DemoService demo(){
return new DemoServiceImpl();
}
}
以上代码。转成全手动操控的完整过程如下(内部差不多就这么处理,不要把它用于日常开发):
DemoService bean = new DemoServiceImpl();
BeanWrap bw = new BeanWrap(Solon.context(), DemoServiceImpl.class, bean, "demo", true);
//实现上面配置器的效果,需要四行代码
Solon.context().putWrap("demo", bw);
Solon.context().putWrap("org.demo.DemoServiceImpl", bw);
Solon.context().putWrap(DemoServiceImpl.class, bw);
Solon.context().putWrap(DemoService.class, bw);
//如果是泛型还会有:
Solon.context().putWrap("org.demo.DemoServiceImpl<D>", bw);
Solon.context().putWrap("org.demo.DemoService<T,Y>", bw);
以上注册,我们可以这样获取 BeanWrap:
//这是常用的获取方式
Solon.context().getWrap("demo");
Solon.context().getWrap(DemoService.class);
//也可以
Solon.context().getWrap("org.demo.DemoServiceImpl");
Solon.context().getWrap(DemoServiceImpl.class);
2、Bean 在容器里是有两层信息
从上面的过程,可以得出 Bean 在容器里是有两层信息:
- 自身包装器的元信息
- 在容器里的注册信息(一个包装,可以有多条注册记录)
Solon2 开发之IoC,十、Bean 在容器的两层信息的更多相关文章
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity ...
- Spring注解驱动开发之Ioc容器篇
前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...
- JavaEE开发之Spring中Bean的作用域、Init和Destroy方法以及Spring-EL表达式
上篇博客我们聊了<JavaEE开发之Spring中的依赖注入以及AOP>,本篇博客我们就来聊一下Spring框架中的Bean的作用域以及Bean的Init和Destroy方法,然后在聊一下 ...
- Spring——IOC与Bean容器
[IOC] (1)IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护.也就是说由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中 (2)DI: ...
- Liferay7 BPM门户开发之10: 通用流程实现从Servlet到Portlet(Part1)
开发目的: 实现通用流程自动化处理(即实现不需要hardcode代码的bpm统一处理后台,仅需要写少量前端html form代码和拖拽设计BPM定义) 既可独立运行或可依托于Liferay或依托其它门 ...
- 使用Spring IoC进行Bean装配
Spring概述 Spring的设计严格遵从的OCP(开闭原则),保证对修改的关闭,也就是外部无法改变spring内部的运行流程:提供灵活的扩展接口,也就是可以通过extends,implements ...
- spring源码分析之玩转ioc:bean初始化和依赖注入(一)
最近赶项目,天天加班到十一二点,终于把文档和代码都整完了,接上继续整. 上一篇聊了beanProcess的注册以及对bean的自定义修改和添加,也标志着创建bean的准备工作都做好了,接下来就是开大招 ...
- Android开发之Java集合类性能分析
对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...
- Cocos2d-x 3.x游戏开发之旅
Cocos2d-x 3.x游戏开发之旅 钟迪龙 著 ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x ...
- DarkStone - 跨平台移动应用开发之 Flex 的崛起
我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32) 此文章由 周戈 (DarkSton ...
随机推荐
- Python 异常处理:try、except、else 和 finally 的使用指南
异常处理 当发生错误(或我们称之为异常)时,Python 通常会停止执行并生成错误消息. try 块用于测试一段代码是否存在错误. except 块用于处理错误. else 块用于在没有错误时执行代码 ...
- 一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
前言 大家有使用过.NET开发过OCR工具吗?今天给大家推荐一个基于百度飞桨封装的.NET版本OCR工具类库:PaddleOCRSharp. OCR工具有什么用? OCR(Optical Charac ...
- FDA周五发布的药物安全警示信息相对会较少地被媒体传播
The Friday Effect: Firm Lobbying, the Timing of Drug Safety Alerts, and Drug Side Effects 周五发布的药物安全警 ...
- 02Java学习_注意事项和学习方法
02_Java 开发注意事项细节和学习方法 目录 02_Java 开发注意事项细节和学习方法 注意事项 学习方法 注意事项 .java 是 Java 文件的拓展名.源文件的基本组成部分是类--clas ...
- 大白话说Python+Flask入门(三)
写在前面 今天状态很不好,我发现学这部分知识的时候,会出现溜号或者注意力无法集中的情况. 我能想到的是,大概率是这部分知识,应该是超出了我现在的水平了,也就是说我存在知识断层了,整体感觉真的是一知半解 ...
- 如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索
如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索 这是AIGC的时代,各种GPT大模型生成文本,还有多模态图文并茂大模型, 以及stable diffusion和sta ...
- Linux笔记03: Linux常用命令_3.2目录操作命令
3.2 目录操作命令 3.2.1 ls命令 ●命令名称:ls. ●英文原意:list directory contents. ●所在路径:/usr/bin/ls. ●执行权限:所有用户. ●功能描述: ...
- 国产化软件新浪潮: spring 改造替代...
中午看了篇<国产化软件新浪潮:jdk redis mysql tomcat nginx改造替代品及信创名录> 想给它补充个 spring 改造替代:) 七.Spring 替代品 - Sol ...
- winform中也可以这样做数据展示✨
1.前言 在做winform开发的过程中,经常需要做数据展示的功能,之前一直使用的是gridcontrol控件,今天想通过一个示例,跟大家介绍一下如何在winform blazor hybrid中使用 ...
- 神经网络优化篇:机器学习基础(Basic Recipe for Machine Learning)
机器学习基础 下图就是在训练神经网络用到的基本方法:(尝试这些方法,可能有用,可能没用) 这是在训练神经网络时用到地基本方法,初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练 ...