spring学习笔记一(基础特性)

本文深入解析Spring框架中依赖注入机制的工作原理,重点介绍BeanWrapper的封装机制,及其如何通过BeanFactory和ApplicationContext实现动态创建和管理Bean实例。此外,文章还概述了Spring MVC框架的应用与特性,以及事务管理、前端验证、AOP等高级功能的简要介绍。

sping学习

  spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需再编写组件代码时就加以指定,所以降低了组件之间的耦合。比如spring配置文件中声明不同的bean实例,实例对应的类都是继承于同一个抽象类,可以再配置文件中直接指定不同继承类的传递参数。甚至,可以把要运行时调用的bean实例名字和参数写在properties配置文件中,动态去读取。依赖注入也更多的表现在bean实例之间的相互引用,作为属性把一个bean实例注入到另外一个bean实例里。

   spring的依赖注入和控制翻转来描述spring是比较生涩的,我认为spring使用了很多设计模式来实现的,也涉及了众多的技术范畴,比如mvc,orm以及remote interface等。spring是一个非强制性的框架,里面有许多独立的组件可以选择。

 Spring Bean的封装机制:

  org.springframework.beans包中包括了核心组件的实现类,核心中的核心为BeanWrapper和

BeanFactory类,这两个类是关键所在。

    关于Bean Wrapper:

org.springframework.beans包遵循Sun发布的JavaBean标准。JavaBean是一个简单的含有一个默认无参数构造函数的Java类, 这个类中的属性遵循一定的命名规范,且具有setter和getter方法。例如,某个类拥有一个叫做bingoMadness的属性,并同时具有与该属性对应的setter方法:setBingoMadness(..)和getter方法:getBingoMadness()。 如果你需要了解JavaBean规范的详细信息可以访问Sun的网站 (java.sun.com/products/javabeans)。

这个包中的一个非常重要的概念就是BeanWrapper接口以及它对应的实现(BeanWrapperImpl)。根据JavaDoc中的说明,BeanWrapper提供了设置和获取属性值(单个的或者是批量的),获取属性描述信息、查询只读或者可写属性等功能。不仅如此,BeanWrapper还支持嵌套属性,你可以不受嵌套深度限制对子属性的值进行设置。所以,BeanWrapper无需任何辅助代码就可以支持标准JavaBean的PropertyChangeListenersVetoableChangeListeners。除此之外,BeanWrapper还提供了设置索引属性的支持。通常情况下,我们不在应用程序中直接使用BeanWrapper而是使用DataBinder 和BeanFactory

BeanWrapper这个名字本身就暗示了它的功能:封装了一个bean的行为,诸如设置和获取属性值等。

   所以说:beanWrapper,实际就是反射生成类实例,并注入property,而且支持嵌套注入。

看看如何通过Spring BeanWrapper操作一个JavaBean

 

Object obj = Class.forName("net.xiaxin.beans.User").newInstance();

BeanWrapper bw = new BeanWrapperImpl(obj);

bw.setPropertyValue("name", "Erica");

System.out.println("User name=>"+bw.getPropertyValue("name"));

对比之前的代码,相信大家已经知道BeanWrapper的实现原理。

诚然,通过这样的方式设定Java Bean属性实在繁琐,但它却提供了一个通用的属性设定机制,而这样的机制,也正是Spring依赖注入机制所依赖的基础。

通过BeanWrapper,我们可以无需在编码时就指定JavaBean的实现类和属性值,通过在配置文件加以设定,就可以在运行期动态创建对象并设定其属性(依赖关系) 


Bean Factory:

  Bean Factory,顾名思义,负责创建并维护Bean实例。

1.Bean属性及依赖关系(对其他bean的引用)

2.Bean的创建模式(是否Singleton模式等等)

3.Bean的初始化和销毁

4.Bean的依赖关系

我们获得bean实例,由BeanFactory进行加载,并根据配置文件进行初始化和属性设定。对于一个Bean实例,其中属性值代表的意义如下:


 总结,BeanWrapper实现了针对单个Bean的属性设定操作,而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取类名,属性名/值,然后通过Reflection机制进行Bean加载和属性设定。


 ApplicationContext:

 ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性如下:

1.国际化语言支持

2.资源访问

 支持对文件和URL的访问,比如ctx.getResource("classpath:xx.propeties");

3.事件传播

 事件传播特性为系统中状态改变时的检测提供了良好的检测。

 ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean时间的传播功能。通过

Application.publishEvent方法,可以将定义的时间event通知系统内所有的ApplicationListener。

4.多实例加载

  可以在同一个应用中加载多个Context实例。



Spring mvc 图示:



Spring mvc和页面框架配合使用:

1.xstl框架 2.freemarker框架 3.Velocity框架等


Spring的事务管理略


Spring的前端validate等略


Spring的Aop略




内容概要:本研究聚焦于绿电直连型电氢氨园区的优化运行,提出种集成绿色电力直接供给、电解水制氢及氢气合成氨工艺的综合能源系统架构。通过建立包含风光发电、电解槽、氨合成反应器、储氢罐、电网交互及多类型负荷在内的系统模型,综合考虑绿电直供优先、能量梯级利用与多能互补原则,构建以系统综合运行成本最小化为目标的优化调度模型。研究采用Matlab与Python工具进行算法求解和仿真分析,利用实际气象与负荷数据完成案例验证,评估了不同运行策略下系统的经济性、可再生能源消纳能力与碳减排效益,为新型电氢氨体化园区的规划与运行提供了理论依据和技术支撑。; 适合人群:具备定电力系统、新能源或化工背景的研究生、科研人员及从事综合能源系统规划与优化工作的工程技术人员。; 使用场景及目标:①用于科研学习,理解电-氢-氨多能转换系统的建模与优化方法;②为工业园区的低碳化、智能化改造提供技术参考与决策支持;③作为开发类似综合能源管理系统的理论基础。; 阅读建议:此资源包含完整的模型代码、数据与论文,使用者应结合代码仔细研读论文中的模型构建部分,重点关注目标函数与约束条件的设计逻辑,并尝试修改参数进行仿真,以深入掌握优化算法在实际系统中的应用。
内容概要:本文深入探讨了RS485通信协议在芯片行业自动化测试系统中的实际开发与应用,涵盖其关键概念、电气特性、通信机制及与Modbus RTU协议的结合使用。文章重点介绍了差分信号完整性设计、主从时序控制、CRC校验与重传机制等核心技术要点,并通过个基于Python的完整代码实例,展示了如何实现RS485主站对探针台、自动分选机等芯片测试设备的控制与数据采集。此外,还分析了RS485在晶圆探针台、ATE设备集群和环境监控等典型场景的应用,并展望了其与工业以太网融合、智能化诊断、高速化及AI集成的发展趋势。; 适合人群:具备定嵌入式系统或工业通信基础,从事芯片测试、自动化设备开发及相关领域的研发人员,尤其是工作1-3年希望提升现场总线应用能力的工程师。; 使用场景及目标:①理解RS485在高干扰芯片测试环境中稳定通信的设计原理;②掌握Modbus RTU协议在Python下的实现方法,用于实际控制探针台、Handler等设备;③构建可靠的数据采集与设备控制系统,支持CRC校验、异常处理和日志追踪;④为后续向高速通信和智能诊断系统升级提供技术储备。; 阅读建议:此资源强调实战开发,建议结合硬件环境动手调试代码,重点关注线程锁、CRC计算、帧解析和超时控制等关键环节,在真实产线中验证通信稳定性,并利用日志系统进行故障分析与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值