PHP网站开发简单实例施工企业资质类别

diannao/2026/1/20 7:18:53/文章来源:
PHP网站开发简单实例,施工企业资质类别,服装网站模板,快速建设网站免费视频教程下面的代码#xff0c;照着复制就能跑起来 今天看了下Spring的Configuration#xff0c;即java类配置bean,#xff08;这个spring3的新功能#xff0c;虽然现在已经spring5了#xff0c;但是这种配置bean的方式也是比较火的#xff09; 做了如下测试#xff0c;发现一个…下面的代码照着复制就能跑起来 今天看了下Spring的Configuration即java类配置bean,这个spring3的新功能虽然现在已经spring5了但是这种配置bean的方式也是比较火的 做了如下测试发现一个现象先说这个现象后面用自己的理解再简单实现一下。 先说现象 在java配置类中加Configuration下面的声明bean的方法就只会被调一次也就是初始化的时候哪怕是下面的方法直接互相引用返回的new的对象的构造方法也只会调一次 而如果不加Configuration那么下面的方法如果有相互调用那么返回的new的对象的构造方法就会被调多次 下面是测试代码 Configuration ComponentScan(com.zs.cglib) //这个类作为配置类 public class CglibConfig {Beanpublic TestDomain testDomain(){return new TestDomain();}Beanpublic TestDomainTwo testDomainTwo(){//这个方法会预先调用上一个方法testDomain();return new TestDomainTwo();} }Component(testDomain) public class TestDomain {public TestDomain() {//构造参数打印证明被调过System.out.println(new TestDomain-------------);} }Component(testDomainTwo) public class TestDomainTwo {public TestDomainTwo() {//构造参数打印证明被调过System.out.println(new TestDomainTwo-------------);} }public class StartMain {//启动测试public static void main(String[] args) {AnnotationConfigApplicationContext anno new AnnotationConfigApplicationContext(CglibConfig.class);System.out.println(anno.getBean(TestDomain.class));System.out.println(anno.getBean(TestDomainTwo.class));} }可以发现如果CglibConfig加上Configuration就会打印出 new TestDomain------------- new TestDomainTwo------------- 如果把Configuration去掉就会打印出 new TestDomain------------- new TestDomain------------- new TestDomainTwo------------- 也就是说加上Configurationnew出TestDomain实例只执行了一次也就是说testDomainTwo()中调用的testDomain()并没有new出新的TestDomain实例。 而把Configuration去掉TestDomain实例就会被new两次也就是testDomainTwo()中调用的testDomain()也有new出TestDomain实例。 这是为什么呢当然肯定和Configuration有关。 一般情况我们把带有Configuration的类叫做全注解配置类也叫Full配置类 我们把不带Configuration的类叫Lite配置类 源码解释 追了下源码一直找到org.springframework.context.annotation.ConfigurationClassPostProcessor#enhanceConfigurationClasses 突然看到enhancer这不是cglib的东西么根据这个线索再追就知道了加上Configuration其实是用了Cglib代理了 所以方法已经被增强了那肯定还有其他逻辑 再找到org.springframework.context.annotation.ConfigurationClassEnhancer#newEnhancer 这就是cglib了那就找callback再找intercept方法org.springframework.context.annotation.ConfigurationClassEnhancer.BeanMethodInterceptor#intercept 这个方法里面增强了原方法其实就是用map实现的下面来个简单的模仿 根据cglib实现简单的效果 亲自写了个简单的cglib实现还原了Configuration的这种现象 测试代码如下 CglibConfig这个类把注解都去掉咱们自己实现这个只调一次的功能 public class CglibConfig {public TestDomain testDomain(){return new TestDomain();}public TestDomainTwo testDomainTwo(){testDomain();return new TestDomainTwo();} } TestDomain和TestDomainTwo两个类不变 新增一个callback实现以下逻辑。这都是cglib的知识点不动可以查下cglib简单实现 public class MyCallBack implements MethodInterceptor {//这个map就记录了方法每次调用的痕迹并把调用后的结果保存起来不是第一次调用的话就直接将结果返回就行了private static MapString,Object map new HashMap();Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {//获取方法名字String name method.getName();if(isFirst(name)){//如果方法是第一次调用Object invoke methodProxy.invokeSuper(o, objects);//调用完将结果保存在map中map.put(name,invoke);return invoke;}else{//第二次第三次调用就走这里直接返回map中的结果return map.get(name);}}private boolean isFirst(String name) {//判断是不是第一次调用其实就是看这个name在map中是不是已经注册了Object invoke map.get(name);if(invoke null){return true;}return false;} } 再写个cglib的util,以便main方法调用 public class CglibUtil {public static Object getBean(){//看到这个应该就要想到cglibEnhancer enhancer new Enhancer();enhancer.setSuperclass(CglibConfig.class);enhancer.setCallback(new MyCallBack());CglibConfig proxy (CglibConfig) enhancer.create();return proxy;} } //主方法测试 public class StartMain {public static void main(String[] args) {CglibConfig bean (CglibConfig) CglibUtil.getBean();bean.testDomain();bean.testDomainTwo();} }执行的结果是 new TestDomain------------- new TestDomainTwo------------- 总结 利用cglib代理增强 如果这个方法第一次调用就把调用的方法名和返回的结果保存在map中 后面再有调用就直接返回结果了不会真正再去执行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杭州网站建设公司联系方式it外包公司联系电话

首先解释一下什么是Session,如果你不知道的话。当一个访问者来到你的网站的时候一个Session就开始了,当他离开的时候Session 就结束了。本质是来说,cookie是和浏览器有关系,而Session变量就可以存一些资源变量在服务器上面。PHP4用文件存储Session变量, 但理论上可以用数据库或…

企业站群cms免费服务器空间申请

1.在项目中,服务之间的调用是怎么实现的? 1.1基于RestTemplate和LoadBalanced注解: RestTemplate是Spring提供的用于访问RESTful服务的客户端。添加LoadBalanced注解后,RestTemplate会成为一个负载均衡的HTTP客户端,它…

wordpress 自助建站建设哪里有

本文主要简单讲述了如何使用php实现简单的用户登陆以及登陆验证效果。1、首先实现通过Session实现用户的登录那么什么是session呢?session被译为会话,它主要是为了在一定访问期间在不同页面之间间传输数据,用来解决http协议无状态。session在…

乌海建设局网站php网站后台模板

1.关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的知识,xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除…

个人网站建设方案书怎么写婚纱网站策划书模板

接口签名生成方式 前言 当某个系统对外部系统提供接口访问时,为提高接口请求安全性,往往会在接口访问时添加签名,当外部系统访问本系统签名验证成功时才能正常返回数据,一般接口提供方会与外部系统提前约定好,不同外…

企业搭建网站哪家好dz门户网站模板下载

在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据&am…

大连做公司网站哪家好国内房地产设计网站建设

接口错误提示如下 SAP官方 CJ067 124177 - VA01: CJ067 during WBS acct assgmt with a different business area S4的core 刚好能用上 实施 这个note后成功

高品质网站设计wordpress导入媒体查看

会议成果: 1.今天我们确定了软件版本的时间alphe版在12周做出来,在我们内部测试基本通过。 bate版在13周发布和其他组作交换测试,在14周release版发布并给其他人使用体验准备15周的演讲。 2.同时确定了部分功能实现顺序,”谁是卧底…

重庆网站推广流程微博营销的方法和手段

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

天峨县建设局网站腾讯企业邮箱域名可以做网站吗

文 | 智能相对论 作者 | 沈浪 或许,谁也没想到未来应用来的如此之快,现如今传统应用从开发到体验,已经进入了一个前所未有的颠覆性改革阶段。 不久前,美国人工智能公司OpenAI举办开发者大会。在现场,公司创始人Sam …

做系统网站好可以做问卷挣钱的网站

随着人们生活质量日益提升,对其自身的居住环境也有了较高要求,每个人审美不一样,无论自己居住的房屋还是公司办公/商场等场景都需要设计不同的内容,还有各种设施的摆放及类别等都有讲究,尤其对公司及商场等环境&#x…

什么网站是vue做的wordpress去除手机版

Context Capture无法量测连接点,Surveys提示Read only只读模式 出现这个问题一般是因为当前block已经完成三维重建,所以无法再编辑稀疏重建(空三)结果。只能把当前block复制一份,在复制的block上量测新的连接点。如下…

图库网站cmswordpress 添加表情

搜索镜像 https://developer.aliyun.com/mirror/?serviceTypemirror&tag%E7%B3%BB%E7%BB%9F&keywordalmalinux dvd是有界面操作的,minimal是最小化只有命里行 镜像下载地址 安装和centos基本一样的,操作命令也是一样的,有需要我…

高端网站开发找哪家好wordpress树形导航注册

文章目录1. 题目2. 解题2.1 正常思维BFS2.2 逆向思考BFS1. 题目 你是个房地产开发商,想要选择一片空地 建一栋大楼。 你想把这栋大楼够造在一个距离周边设施都比较方便的地方,通过调研,你希望从它出发能在 最短的距离和 内抵达周边全部的建筑…

域名被墙检测网站北京双诚建设监理公司网站

又一项看似技术需求驱动,最终发现还是业务需求驱动的体系化建设。 0. 目录结构 1. 中拔出溜公司的特点2. 达成共识3. 推荐落地路线3.1 理论解析3.2 Loki Promtail Grafana 轻量级零侵入方案3.3 接入traceId3.4 基础设施监控 后记相关 1. 中拔出溜公司的特点 在传…

只买域名不建网站自己制作网站做外贸赚钱吗

本文用于检验学习效果,忘记知识就去文末的链接复习 1. ECMAScript介绍 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言…

汕头网站搭建cnnic 网站

因为工作忙碌的关系,很长时间都没有来关注手机游戏论坛,这款富甲三国.雄霸天下,我也是前天才拿到手。游戏比想象中的简单,个人仅用了两个小时时间,就将三个人物全部通关。游戏的开始画面制作得比较精美,而且…

大连建设工程信息网下载中心太原seo建站

在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的。比如在化工生产中,有温度、压力、剂量、反应时间等因素。每一因素的改变都有可能影响产品的数量和质量。我们往往要找出对产品质量有…

php网站建设教程 电子书河北软文搜索引擎推广公司

1、建立一个文件夹,如pcl_demos,里面建立一个.cpp文件和一个cmake文件 2、打开终端并进入该文件夹下,建立一个build文件夹存放编译的结果并进入该文件夹 3、对上一级进行编译 cmake .. 4、生成可执行文件 make 5、运行该可执行文件 6、可视…