征求IOC/AOP微形开源项目jBeanBox合作者

这是一个微形开源项目,目标是使用尽可能少的Java类实现全功能的IOC和AOP功能,有兴趣参加的朋友可以跟贴,贡献者将列入作者名单,谢谢!
项目的目的是取消XML配置文件而用纯Java类代替,Spring本身越来越臃肿,替我们自做主张集成了自以为最好的一条龙服务,这本身没什么,可以自取所需。 但是它最大问题是采用XML静态配置,导致需要动态修改配置功能时灵活性不够,注解的引入没有根本性变化。 jBeanBox项目只实现最基本的IOC和AOP功能以满足功能单一原则。用尽可能少的源码实现,基本思路可参见我的另一贴"JSP页面布局工具jWebBox升级到2.0版" http://www.iteye.com/topic/1143195, 利用Java类本身作为配置文件,来获得免学习、高灵活性、高可定制性、支持UML图、类可继承、类名检查、类名重构、代码提示等优点,且得益于对象化和微型化设计(尽可能不要超过10个Java类),本IOC/AOP工具有支持动态更改配置、启动快速、适合移植到移动开发等特点。 项目采用BSD协议,项目地址为https://sourceforge.net/projects/jbeanbox/
(补充一下,这两天研究Spring才发现Spring3.0已经有了用JAVA类代替XML配置的做法,实现了编译器类名检查,但是仔细一看,晕倒,它使用了一种特殊的JAVA类,又引入了四个新的注解,注解加JAVA,不伦不类。配置类不能继承重用、而且最大问题是把语句写死在Java配置类里,如果运行期要动态生成、修改配置类怎么办? 看来三种配置方式还不够,将来Spring还会增加第四种配置方式。 于2016年2月13日)
(这两天没人跟贴就在原贴基础上再更新一遍,第一版jBeanBox已上传到项目目录https://sourceforge.net/projects/jbeanbox/下,有兴趣的可以当下来看一看源码,目前源码220行,已实现了设值注入、构造器注入、静态工厂注入、实例工厂注入四种IOC,因时间关系还只是一个框架,但用例部分已经全部跑通,感觉比XML配置方便多了,调试时经常要变动类名,利用重构功能Eclipse自动全部更新,不用担心类名拼写出错了,但是方法名拼错就没办法了,JDK1.8以下没有方法变量支持。 目前实现了IOC所有注入方式,只不过都是多例的,还要改成默认单例的,要和不擅长的多线程和单例注册表打交道了,AOP功能也不太了解,有时间再加上去。个人感觉用纯Java代理Box类代替XML作为配置文件可以成为一种设计模式,对简化编程非常有成效,要知道Spring IOC和AOP内核一共有700多个类3.6M,要压缩成只有一个类(估计项目最终完成后不超过1000行)是个什么概念! 源码写的很烂,没加注释,但好在目前只有两百行,读起来还是很容易的。 于2016年2月15日)

以下是对此项目的描述,用例部分已调试通过(目前是多例的),AOP功能如何还待添加。
jBeanBox is a micro-scale but full functional IOC & AOP tool, it has no XML files(Use "BeanBox" classes to replace), no annotations. 1 Java class do all the jobs Spring IOC/AOP core did. jBeanBox is an open source software follows BSD license.

Why jBeanBox?
Current IOC/AOP frameworks problem:
1) Spring, HiveMind and other IOC/AOP tools use XML as configuration file: XML is hard to write and maintenance, hard to present complicated features like extends, map, sets injection, and not flexible to create/change configuration in run-time.
(I just notice from Spring3.0, Spring imported a kind of special JAVA class to replace XML, but that's a wired way, Java mixed up with annotations, it's not OO designed, and can not create/modify configuration at run time. )
2) Guice and other IOC/AOP tools depend on annotation: write annotation in bean class is an invasion; IOC/AOP tool should no need to change anything in bean classes.
3) PicoContainer, no AOP function, Bean configurations cannot be re-used.
jBeanBox is lightest IOC/AOP tool, which function only focus on IOC/AOP. It's small size but full functional, source code are short and easy to understand. It’s ideal to mobile device developing, and of cause, can use anywhere where an IOC/AOP tool needed.


Key features of jBeanBox:
1) Simple, function only focuses on IOC and AOP. No XML files, no any annotations, use pure Java classes to replace XML, these Java classes be called "BeanBox" (similar like "Box" concept in another open source project "jWebBox", it looks like if XML configurations become complicated, use a "Box" to replace it often make things simple and flexible.)
2) As using Java class to store configurations, IDE can help to find class name spelling mistake, UML tool can used to draw bean relationship graph, Bean Boxes can organized in packages according its function.
3) No conflict with other bean containers, it can be used as foundation of whole project or only to manage few Beans in application.
4) Friend to test, as configurations are stored in Java BeanBox tree, only Beans included in this tree will be created and injected, so it starts quick. It’s also friend to team work, user A and user B can have their own BeanBoxes/Beans and test it separately, after tested just copy these beans together.
5) Bean configurations (BeanBox classes) are created dynamically, it's easy to modify or create configurations at run-time. For example, change bean create method from singleton to prototype, inject different bean instance, add or remove AOP pointcuts at run-time.
6) Small size, only 1 java file (and 2 .jar libs) needed, ideal for mobile device applications.
7) jBeanBox tool only implements IOC and AOP function, no intend to add more functions like Transactions, Hibernate, MVC support. User should assembly these functions in project by themselves or to find a one-site solution project at other places.

How to use it:
This project be packaged as .war file, you can import it into Eclipse as a web project to see the source code, and run MainTest.java to see the test result, why packed in .war format is because there are 2 lib files "asm-3.x.x.jar" and "cglib-2.x.jar" are necessary, it's convenient to import to Eclipse. And you can also download new version of asm-3.x.x.jar and cglib-2.x.jar from their project homepages.

Typically a project using jBeanBox, need prepare below files:

1. Your bean or interface classes, for example, below 3 bean classes and 1 factory class:
public class Company {
private String name;
//getter & setter......
}

public class OrderItem {
private String itemName;
private Double price;
//getter & setter......

public OrderItem(String itemName, Double price) {
this.itemName = itemName;
this.price = price;
}
public void printItemInfo() {
System.out.println(itemName + " $" + price);
}
}

public class Order {
private String orderNO;
private OrderItem orderItem1, orderItem2, orderItem3;
private Company company;

//getter & setter......
public void printALlItems() {
System.out.println("OrderNO:" + orderNO);
System.out.println("Company:" + company.getName());
orderItem1.printItemInfo();
orderItem2.printItemInfo();
orderItem3.printItemInfo();
}
}

public class OrderItemFactory {
private Boolean hidePrice;

public OrderItemFactory(Boolean hidePrice) {
this.hidePrice = hidePrice;
}

public static OrderItem createOrderItem(String itemName, Double price) {
return new OrderItem(itemName, price);
}

public OrderItem createOrderItem2(String itemName, Double price) {
if (hidePrice)return new OrderItem(itemName, 0.0);
else return new OrderItem(itemName, price);
}
}


2. Configuration classes (to replace XML):
class OrderTemplate extends BeanBox {
{ this.setBeanClass(Order.class);
this.setProperty("orderNO", "PO#20160214");// setter inject value
this.setProperty("company", new BeanBox(Company.class).setProperty("name", "Dog Shop"));// setter inject bean
this.setProperty("orderItem1", new BeanBox(OrderItem.class, new Object[] { "Dog1", 77.99 }));// setter & constructor inject
this.setStaticFactory("orderItem2", OrderItemFactory.class, "createOrderItem", new Object[] { "Dog2", 88.99 });// static factory inject
BeanBox factory = new BeanBox(OrderItemFactory.class, new Object[] { true });// constructor inject
this.setInstanceFactory("orderItem3", factory, "createOrderItem2", new Object[] { "Dog3", 99.99 });// instance factory inject
}
}

public class OrderBox extends OrderTemplate {
{ this.setProperty("company", ((BeanBox) getProperty("company")).setProperty("name", "Dog Store"));// modify property
}
}

3. At last, get bean instance by call getBean method:
public static void main(String[] args) {
Order order = (Order) new OrderBox().getBean();
order.printALlItems();
}

For this example, below is output result:
OrderNO:PO#20160214
Company:Dog Store
Dog1 $77.99
Dog2 $88.99
Dog3 $0.0
政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载

相关推荐

科技中介服务机构如何通过智能体技术提升服务效率与专业度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

解决maven 打包不能下载私服上的jar包

背景 使用mvn clean package -DskipTests -Pro 打包,提示如下信息,找不到依赖的三方包,正常应该是从公司的私服下载,如果找不见,再从其他中央仓库下载。 问题截图如下: 于是查看maven 的setting.xml ,如下图二其中,profile 里配置了公司私服的地址,而且公司私服的镜像地址也配置,如下图三: 图二: 图三: 解决办法 查看官网及其他环境的maven setting.xml 配置文件,发现没有配置默认的profile ,因此需要给公司私服的.

xiangqianzou_liu的专栏 2188

产业园区如何高效对接企业技术需求并推动成果转化?观点作者:科易网-国家科技成果转化(厦门)示范基地.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

无功优化电网故障下分布式能源系统多目标优化[并网转换器(GCC)](Matlab代码&Simulink实现)

内容概要:本文详细介绍了基于Plecs或Simulink平台构建的全桥LLC谐振变换器仿真模型,重点研究了变频控制与移相混合控制策略下的闭环系统设计与参数优化方法。内容涵盖全桥LLC谐振变换器的工作原理、小信号建模技术(如扩展描述函数EDF)、PID控制器参数整定过程以及软开关实现条件,并通过仿真验证了系统在稳态输出性能、动态响应特性(如启动过程与负载阶跃)和频率调节平滑性等方面的优良表现。同时提供了完整的仿真模型、参数设计报告及说明文档,有助于读者复现结果并深入理解控制机制与建模细节。; 适合人群:具备电力电子、自动控制等相关专业知识背景,从事高效率电源设计、新能源变换系统研发的工程师及高等院校电力电子与电力传动方向的研究生。; 使用场景及目标:①掌握LLC谐振变换器的小信号建模与闭环控制系统设计方法;②学习并应用变频与移相结合控制策略提升电源转换效率;③支撑科研项目中的电力电子系统仿真验证或学位论文课题开发;④复现高水平学术论文中关于谐振变换器的控制方案与性能分析。; 阅读建议:建议结合所提供的仿真模型与参数设计资料,边运行仿真边对照文章内容理解控制逻辑与建模过程,特别关注小信号模型的建立方法与PID控制器参数整定环节,以增强对实际工程问题的分析与设计能力。

政府科技管理者在推动科技成果转化时,如何高效整合区域创新要素资源?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

法律服务业AI知识库与大模型训练平台规划方案.pptx

法律服务业AI知识库与大模型训练平台规划方案.pptx

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文围绕两相交错并联Boost电路的Simulink仿真模型展开,旨在通过仿真手段深入研究该电路在电力电子系统中的工作特性与性能优势。文章系统阐述了两相交错并联Boost电路的拓扑结构、工作原理及其在提升系统效率、减小输入电流纹波、均衡电流分配方面的显著优势。通过构建完整的Simulink仿真模型,对电路在不同负载与输入条件下的动态响应、稳态性能及控制策略进行了全面分析与验证。重点设计并实现了电压电流双闭环PI控制策略,详细论述了PI控制器的参数整定方法、占空比调节机制以及交错并联所带来的均流效果。仿真结果表明,所构建的模型能够有效提升系统的动态响应速度与稳定性,显著降低输入电流的谐波含量与纹波幅值,验证了交错并联技术在中高功率DC-DC变换应用中的优越性。; 适合人群:具备电力电子技术基础、熟悉Simulink仿真的电气工程及相关专业本科生、研究生,以及从事电源系统设计、新能源变换器研发的工程技术人员。; 使用场景及目标:①学习和掌握交错并联Boost电路的拓扑结构、工作原理与建模方法;②开展电力电子变换器的仿真分析、控制器设计与参数优化;③为实际工程项目中的高性能DC-DC变换器设计,特别是追求低输入纹波和高功率密度的应用场景,提供理论支撑与仿真验证依据。; 阅读建议:建议读者结合Simulink模型文件同步操作,深入理解主电路各模块、双闭环控制结构及PWM调制环节的参数设置与逻辑实现,重点关注PI控制器的参数整定过程与交错控制的时序配合,并可通过调整输入电压、负载大小及控制参数进行对比实验,以深化对交错并联技术优势及其控制策略的理解。

政府科技管理者在推动科技成果转化时,如何精准识别区域内的技术供需匹配问题?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

秋葵成熟度检测数据集VOC+YOLO格式508张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

科技中介服务机构如何借助平台降低服务门槛并提升专业服务能力?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

景嘉微 JM 9100 系列 麒麟操作系统驱动包 x86架构

景嘉微 JM 9100 系列 麒麟操作系统驱动包 x86架构

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文档围绕“两路半桥LLC谐振变换器软开关Simulink仿真”展开,系统性地介绍了LLC谐振变换器在不同谐振参数与分裂电容条件下的动态性能影响,提供了完整的Simulink仿真模型及相关设计资料。资源涵盖开环与闭环控制策略、软启动过程、恒压恒流双闭环控制等核心技术,并融合变频控制、移相混合控制等多种先进控制方法,深入展示变换器的工作特性与优化设计流程。此外,文档还整合了全桥LLC、CLLC、PFC、DAB变换器以及状态估计算法(如EKF、UKF、PF)等丰富的电力电子与控制系统仿真资源,构建了一个面向科研与工程实践的综合性技术资料体系。; 适合人群:适用于具备电力电子、自动控制或电气工程等相关专业知识背景的研究生、科研人员及工程技术人员,特别适合从事新能源、电源设计、电力变换系统研发工作的高年级本科生和硕士生。; 使用场景及目标:① 掌握两路半桥LLC谐振变换器在不同谐振参数和分裂电容配置下的系统响应规律;② 深入理解并实现软开关技术在高频高效电源变换中的应用;③ 构建与调试闭环控制系统,提升变换器的动态稳定性与负载适应能力;④ 利用配套仿真模型进行科研复现、课程设计或毕业课题研究; 阅读建议:建议结合MATLAB/Simulink环境动手实践,按照文档中的模型结构与参数设置逐步验证,重点关注谐振腔参数变化对ZVS/ZCS实现的影响,同时可拓展学习文中提及的其他高级控制策略与拓扑结构,全面提升在电力电子系统建模、仿真与控制方面的综合能力。

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

上一篇: JSP页面布局工具jWebBox升级到到2.0版
下一篇: Eclipse导入Gradle下载的spring源码过程笔记
Drinkjava2
博客等级 码龄11年 9粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值