精华内容
下载资源
问答
  • Spring 管理对象

    千次阅读 2017-05-20 23:09:41
    当我们需要某个对象时,通常的做法是 new 一个对象,然后使用它。使用 Spring 后,套路完全变了,Spring 帮我们创建对象,然后缓存到它的容器中,当我们需要一个对象时,问 Spring 要即可,怎么样?想法是不是非常妙...

    – Start
    点击此处观看本系列配套视频。


    当我们需要某个对象时,通常的做法是 new 一个对象,然后使用它。使用 Spring 后,套路完全变了,Spring 帮我们创建对象,然后缓存到它的容器中,当我们需要一个对象时,问 Spring 要即可,怎么样?想法是不是非常妙,我们来看个例子吧。
    首先,定义一个类。

    package shangbo.spring.core.example1;
    
    public class OutPutService {
    	
    	public void outPut() {
            System.out.println("Hello World");
        }
    	
    }
    

    然后定义一个 XML 配置文件,用来告诉 Spring 需要创建哪些对象以及如何创建对象。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    	<!-- 
    		id 指定 bean 的标识符,必须唯一,如果没有设置,spring 帮我们生成一个
    		name 也用来标识 bean,但可以起多个名字,不是必须要设置的
    		class 指定类的全名
    	-->
    	<bean id="outPutService"
    		name="outPutService1,outPutService2"
    		class="shangbo.spring.core.example1.OutPutService"/>
    
    </beans>
    

    最后定义一个客户端测试类。

    package shangbo.spring.core.example1;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class App {
    	public static void main(String[] args) {
    		// 实例化 Spring IoC 容器,也可以一次读取多个配置文件
    		// ApplicationContext 有很多子类,可以根据你的需求选择
    		ApplicationContext context = new ClassPathXmlApplicationContext("shangbo/spring/core/example1/example.xml");
    
    		// 从容器中获得 Service 对象,传统方式是自己 new 对象
    		OutPutService printer = context.getBean(OutPutService.class);
    
    		// 使用对象
    		printer.outPut();
    	}
    }
    

    从这个例子我们可以看到,我们需要以某种方式告诉 Spring,哪些对象需要它管理,以及创建对象的细节,Spring 称之为配置元数据(Configuration metadata), 这个例子使用 XML 配置元数据。下面我们看一个 Java 配置元数据的例子。
    首先定义一个类。

    package shangbo.spring.core.example2;
    
    public class OutPutService {
    	
    	public void outPut() {
            System.out.println("Hello World");
        }
    	
    }
    

    然后定义一个Java配置类, 用来告诉 Spring 需要创建哪些对象以及如何创建对象。

    package shangbo.spring.core.example2;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    // @Configuration 用来标识该类是一个 Java 配置元数据
    @Configuration
    public class AppConfig {
    
    	// @Bean 用来标识该对象需要 Spring 帮我们管理
    	@Bean
    	public OutPutService outPutService() {
    		return new OutPutService();
    	}
    }
    

    最后定义一个客户端测试类。

    package shangbo.spring.core.example2;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class App {
    	public static void main(String[] args) {
    		// 实例化 Spring IoC 容器,也可以一次读取多个Java配置文件
    		ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    
    		// 从容器中获得 Service 对象,传统方式是自己 new 对象
    		OutPutService printer = context.getBean(OutPutService.class);
    
    		// 使用对象
    		printer.outPut();
    	}
    }
    

    通过上面的例子可以看到,不管使用 XML 或 Java 配置元数据,我们仍然需要明确告诉 Spring 哪些对象需要它管理,以及创建对象的细节,有没有可能完全自动化呢?答案是肯定的,Spring 还支持基于注解的配置元数据,看看下面的例子吧。
    首先还是定义一个类。

    package shangbo.spring.core.example3;
    
    import org.springframework.stereotype.Component;
    
    // @Component 标识的类可以被 Spring 自动管理
    // @Service 标识的类也可以被 Spring 自动管理
    // @Controller 标识的类也可以被 Spring 自动管理
    // @Repository 标识的类也可以被 Spring 自动管理
    @Component
    public class OutPutService {
    
    	public void outPut() {
    		System.out.println("Hello World");
    	}
    
    }
    

    然后定义如下 XML 配置文件,注意我们需要引入context命名空间。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    
    	<!-- 
    		需要告诉 Spring 扫描组件的位置
    	 -->
        <context:component-scan base-package="shangbo.spring.core.example3"/>
    
    </beans>
    

    然后是测试类。

    package shangbo.spring.core.example3;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class App {
    	public static void main(String[] args) {
    		// 实例化 Spring IoC 容器,也可以一次读取多个配置文件
    		// ApplicationContext 有很多子类,可以根据你的需求选择
    		ApplicationContext context = new ClassPathXmlApplicationContext("example.xml", OutPutService.class);
    
    		// 从容器中获得 Service 对象,传统方式是自己 new 对象
    		OutPutService printer = context.getBean(OutPutService.class);
    
    		// 使用对象
    		printer.outPut();
    	}
    }
    

    你也可以使用 Java 配置元数据。
    首先定义一个类。

    package shangbo.spring.core.example4;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class OutPutService {
    
    	public void outPut() {
    		System.out.println("Hello World");
    	}
    
    }
    

    然后定义一个Java配置类。

    package shangbo.spring.core.example4;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    // 需要告诉 Spring 扫描组件的位置
    @ComponentScan(basePackages = "shangbo.spring.core.example4")
    public class AppConfig {
    	// 此处没有定义创建 bean 的细节
    }
    
    

    最后定义一个测试类。

    package shangbo.spring.core.example4;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class App {
    	public static void main(String[] args) {
    		// 实例化 Spring IoC 容器,也可以一次读取多个Java配置文件
    		ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    
    		// 从容器中获得 Service 对象,传统方式是自己 new 对象
    		OutPutService printer = context.getBean(OutPutService.class);
    
    		// 使用对象
    		printer.outPut();
    	}
    }
    
    

    更多参见:Spring Framework 精萃
    – 声 明:转载请注明出处
    – Last Updated on 2017-06-17
    – Written by ShangBo on 2017-05-20
    – End

    展开全文
  • 最近项目中就有如题的一个需求,有些对象,不希望将其交给spring容器去管理,想通过自己new的方式去实例化,以便自己更好的去维护这个对象。 这里非SPRING管理对象,即自己实例化的对象,用A来代替,SPRING管理的...

    最近项目中就有如题的一个需求,有些对象,不希望将其交给spring容器去管理,想通过自己new的方式去实例化,以便自己更好的去维护这个对象。

    这里非SPRING管理的对象,即自己实例化的对象,用A来代替,SPRING管理的对象用B来代替

    在网上找了很久,最终搞定了,这里先说一个弯路:

    ApplicationContext context = new ClassPathXmlApplicationContext(
                    "classpath*:spring/spring-*.xml");
            return (CommonService) context.getBean("commonService");
    如上图所示,A类想引用B类,于是在A类中写了如上的方法来获取B类,启动项目后发现,一旦引用B类时,spring的所有对象就会再次实例化,通过JVM监控发现,对象快要撑爆了,果断放弃,说明如上方法和WEB容器启动加载不是共享的,是独立的,WEB容器启动加载了spring的所有对象,上面方法在被引用时又加载了,这就重复了,引用多少次,就重复多少次,巨坑啊!!!!


    找寻spring容器的方法,从spring容器里去拿一个刚刚被spring容器实例化的对象,这样就不会重复加载了,拿的是实例化后的共享的一个对象

    定义一个类实现自BeanFactoryAware接口

    public class ServiceLocator
            implements BeanFactoryAware {
    
        private static BeanFactory beanFactory = null;
        private static ServiceLocator serviceLocator = null;
    
        @Override
        public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
            ServiceLocator.beanFactory = beanFactory;
        }
    
        public BeanFactory getBeanFactory() {
            return beanFactory;
        }
    
        public static ServiceLocator getInstance() {
            if (serviceLocator == null) {
                serviceLocator = (ServiceLocator) beanFactory.getBean("serviceLocator");
            }
            return serviceLocator;
        }
    
        public static Object getService(String serviceName) {
            return beanFactory.getBean(serviceName);
        }
    
    }
    这样在A类中,如果要引用B类的话,通过上述类的静态方法getService即可,将bean的名字传入
    private CommonService getCommonService() {
            /*@SuppressWarnings("resource")
            ApplicationContext context = new ClassPathXmlApplicationContext(
                    "classpath*:spring/spring-*.xml");
            return (CommonService) context.getBean("commonService");*/
            return (CommonService) ServiceLocator.getService("commonService");
        }
    如上,亲测成功


    这样,非SPRING管理对象和SPRING管理对象就完美的结合到了一起




    展开全文
  • Unity3D框架学习_对象池和对象管理

    千次阅读 2019-04-14 20:41:04
    Unity3D框架学习_对象池和对象管理 目录 1、博客介绍 2、内容 (1)ObjectPoolContainer 对象容器 (2)ObjectPool 单一对象池 (3)PoolManager 对象管理 3、推送 4、结语 1、博客介绍 本篇博客介绍...

                              Unity3D框架学习_对象池和对象池管理


    目录

    1、博客介绍

    2、内容

    (1)ObjectPoolContainer 对象容器

    (2)ObjectPool 单一对象池

    (3)PoolManager 对象池管理

    3、推送

    4、结语


    1、博客介绍

            本篇博客介绍Unity对象池的管理,改自github某工程,结尾会推送,对象池没什么特别好说的了就是实例对象,释放对象,博主这篇写的很简单,读者直接看博主的工程就一目了然了,博客内不再书写代码,工程注释和结构都很清晰,配的还有流程图,工程推送在结尾博主的github。


    2、内容

    (1)ObjectPoolContainer 对象容器

    该脚本包含了实例对象和该对象的使用状态

    (2)ObjectPool 单一对象池

             对象池内包含了,储存对象容器的链表,正在使用的对象的字典,池子名字,获取对象实例的方法Get(),释放对象的方法Release()。

    (3)PoolManager 对象池管理

           对象池管理脚本,对象池会自动挂载在PoolManager空节点下,没有自动创建,生成物释放后也放置在PoolManager下,字典储存了不同的对象池, 可以设置刷新时间RefreshTime来定时刷新池子,会删除不活跃的池子。


    3、推送

    博主github:https://github.com/KingSun5/UnityPool

    学习借鉴:https://github.com/thefuntastic/unity-object-pool


    4、结语

    学习使人进步,最近好困呀,春困呀,博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

           QQ交流群:806091680(Chinar)

           该群为CSDN博主Chinar所创,推荐一下!我也在群里!

           本文属于原创文章,转载请著名作者出处并置顶!!!!!

    展开全文
  • 3-UFT对象管理

    千次阅读 2016-03-25 22:57:00
    UFT对象管理

     

        基于GUI的自动化测试主要是围绕着界面的控件元素来进行的,例如文本框、列表框、控制按钮等等,软件用户通常都是通过这些控件与程序交互,因此,编辑测试脚本的第一步就是识别测试对象。

     

    1、测试对象、运行时对象的区分以及对象库概念

        首先区分UFT中测试对象和运行时对象概念。

        测试对象:Test Object,TO,是UFT定义的一些类,用它们来代表被测应用的各种对象;

     

    TO属性:

        获取对象的属性,可以理解为静态的属性,在运行时的输入东西与它无关。测试对象的属性是UFT为了识别在测试执行过程中的运行时对象而保留在对象库中的属性。

        GetToProperty/GetToProperties和SetToProperty则分别用于读取和修改To的属性值

        运行时对象:Runtime Object,RO,是实际的被测应用对象,是测试执行过程中,TO用来关联的对象;

     

    RO属性:

        是变的(用户名框输入不同的值,这个Ro属性取出来就是不一样)

        GetRoProperty方法用于取得运行时对象(实际对象)的某个属性的值

        简单以登录操作中AgentName对象来说,to属性和运行时输入的东西无关,而ro属性是实际中被测应用对象,在测试执行过程中,会看到对应属性的变化:


          UFT对象库:UFT中,使用对象库对对象进行管理。记录的对象和这些对象的属性,都存储在对象库中。而对象库也可以设置为共享对象库,供多个Action调用。当发现对象库中缺少某个对象时,可以使用对象抓取工具,单个抓取对象添加到对象库中。  

       

     

    2、对象库工具的一些操作

     
        1)对象识别器:Tools-----Object Identification


        2)对象嗅探器:Tools----Object Spy


        打开如下的嗅探器窗口,点击下图方框中的按钮,移动手型的光标,可以看到下图中显示当前光标下的空间属性



     

        3)对象库:Resources-----Object Repository


        注意这里存储的除了测试对象,还有其他的对象类型,如下面的检查点。同样在对象库中,我们可以点击工具栏中的按钮,添加对象到对象库中;也可以高亮某个测试对象;,也可以使用对象嗅探器捕获测试对象;也可以关联其他的测试对象;


     

        4)对象库管理:Resources----Object Repository Manager

        这里实际上共享对象库。在该对话框中,我们可以创建一个共享对象库、将对象库跟Action关联、添加对象到共享对象库中、保存一个共享对象库、修改共享对象库中的对象等。下面是新建一个共享的测试对象:


     

    3、练习

        录制一个Flight程序登录的脚本。脚本要求:

    1. 使用Systemutil.Run打开程序
    2. 创建三个Action,分别是Login,NewOrder,Logout。在三个Action中分别录制对应的操作
    3. 保存NewOrder的本地对象库为NewOrder.tsr
    4. 删除NewOrder的本地对象库
    5. 将NewOrder的Action使用共享对象库(引用已保存的NewOrder.tsr),设置为共享对象库的路径为相对路径
    6. 使用自定义检查点,检查Price*Ticket的价格是否等于Total,并用If语句写出判断成功或是失败后的Reporter.ReportEvent报告语句
    7. 点击关闭,结束录制

        

    补充知识点:

        1)可以使用Systemutil.run加上程序路径,使UFT自动打开被测程序

        2)在录制脚本的过程中,可以点击“录制工具条”中的新建Action按钮,将三个部分的操作放在三个Action中

        3)UFT的VBscript脚本中,使用Const声明定义常量,使用Dim声明定义变量

        4)报告语句,如果程序正确,则可以书写为Reporter.ReportEvent micPass,"结果正确","总价格正确";如果程序不正确,可以使用Reporter.ReportEvent micFail,"结果错误","总价格计算错误";



    结果:

    flight3.zip

    NewOrder中代码:

    '新建订单
    Window("Flight Reservation").ActiveX("MaskEdBox").Type "121216"
    Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
    Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
    Window("Flight Reservation").WinButton("FLIGHT").Click
    Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    Window("Flight Reservation").WinEdit("Name:").Set "jojo"
    Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1
    
    Dim tiknum,price,total
    tiknum=2
    
    
    Window("Flight Reservation").WinEdit("Tickets:").Set tiknum
    Window("Flight Reservation").WinRadioButton("First").Set
    Window("Flight Reservation").WinButton("Insert Order").Click
    
    Dim pricestr,totalstr
    pricestr=mid(window("Flight Reservation").WinEdit("Price:").GetROProperty("text"),2)
    price=CDBl(pricestr)
    totalstr=mid(window("Flight Reservation").WinEdit("Total:").GetROProperty("text"),2)
    total=CDBl(totalstr)
    
    If (price*tiknum)=total Then
        Reporter.ReportEvent micPass,"结果正确","总价格正确"
    Else
        Reporter.ReportEvent micFail,"结果错误","总价格计算错误"
    End if
     

    展开全文
  • 在QML中管理动态对象

    万次阅读 2012-09-20 10:41:28
    ...QML提供了很多种方式动态创建和管理QML对象.Loader,Repeater,ListView,GridView和PathView都支持动态对象管理.对象也可在C++中创建并管理,这是QML\C++相结合的应用程序首选方法. QML也支持
  • Python对象及内存管理

    千次阅读 2015-09-09 14:24:00
    对象类型标准类型 Integer、Boolean、Long integer、Floating point real number、Complex number、String、List、Tuple、Dictionary其他内建类型 类型、Null对象(None)、文件、集合/固定集合、函数/方法、模块...
  • 在使用c++进行windows编程时,程序员除了管理使用new/malloc动态在堆上分配出来的内存外,还需要对windows的内核对象、GDI对象和user对象进行管理,这些对象使用句柄来标识,通过操作这些句柄就使用不同的资源对象。...
  • UFT的使用之测试对象管理

    千次阅读 2015-11-01 12:20:02
    UFT中的测试对象管理包括一下两个方面 一、了解UFT对象的概念 二、UFT对象的操作 UFT中的对象有两个概念,一个是测试对象,一个是运行时对象。 ①测试对象(Test Object,TO):是UFT定义的一些类,用...
  • rt-thread的内核对象管理系统分析

    千次阅读 2013-02-04 15:01:04
    rt-thread采用内核对象管理系统来访问和管理所有内核对象.首先来看看rt-thread的内核对象是如何定义的: 1 数据结构 1.1 对象控制块 在include/rtdef.h头文件中可以找到内核对象有结构定义: /** * Base ...
  • Python面向对象实现图书管理系统

    万次阅读 多人点赞 2018-07-24 15:19:14
    # _*_coding:utf-8 _*_ """ name: book1 date: 2018-07-23 8:05 AM (无敌热的一天,40度,没空调没风扇) author: jay desc: 功能描述: 1.... 管理员的密码唯一且给定; 学...
  •  我这里主要是想在项目中运用装饰者模式,但是因为自己new出来的装饰者service (不受spring管理)并没有注入其他service时,但是我又确实需要去注入,这个时候就找到这两个博客,结合起来。  使用方法:装饰者...
  • 一、在什么情况下,单例的Bean对象存在线程安全问题当Bean对象对应的类存在可变的成员变量并且其中存在改变这个变量的线程时,多线程操作该Bean对象时会出现线程安全。二、原因当多线程中存在线程改变了bean对象的可...
  • 问题:在对象资源管理器中隐藏系统对象   解决:   对象资源管理器的“数据库”节点包含系统对象,如系统数据库。使用“工具”/“选项”页可以隐藏系统对象。某些系统对象(如系统函数和系统数据类型)并不受...
  • C++高阶 RAII机制(以对象管理资源)

    千次阅读 2021-03-28 15:44:38
    这里的资源主要是指操作系统中有限的东西如内存、网络套接字等等,局部对象是指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介入; 2.RAII的原理 资源的使用一般经历三个步骤 a.获取资源 b.
  • 前言ARC只支持管理 Objective-C 对象, 不支持 Core Foundation 对象。Core Foundation 对象必须使用CFRetain和CFRelease来进行内存管理。 那么当使用Objective-C 和 Core Foundation 对象相互转换的时候,必须让...
  • 实验4 Oracle数据库模式对象管理

    千次阅读 多人点赞 2019-05-03 15:07:51
    (1)掌握表的创建与管理。 (2) 掌握索引的创建与管理。 (3) 掌握视图的创建与管理。 (4) 掌握序列的创建与应用。 二、实验环境: Oracle 11g 三、实验内容: 1、打开SQL Plus,以system用户登录BOOKSALES...
  • 对象交给spring管理的3种方法及经典应用

    千次阅读 多人点赞 2020-11-15 20:19:00
    背景先说一说什么叫把对象交给spring管理。它区别于把类交给spring管理。在spring里采用注解方式@Service、@Component这些,实际上管理的是类,把这些类交给sp...
  • 目录springUtil,实现静态方法获取spring管理的bean对象直接看代码 springUtil,实现静态方法获取spring管理的bean对象 有的时候,不想写bean的方式,让调用方去new对象或者是@AutoWired注入,仅仅想提供一个静态...
  • QML概念及框架--QML动态对象管理

    千次阅读 2015-05-22 15:11:38
    QML提供了很多方法来动态创建和管理QML对象。如Loader、RePeater、ListView、GridView和PathView等元素都支持动态对象管理对象也可以在C++中被创建和管理,这是混合QML/C++应用程序的首选方式。QML也支持在...
  • WINX窗口类对象的内存管理

    千次阅读 2007-01-11 22:11:00
    WINX窗口类对象的内存管理许式伟2006-12-29 为了引入WINX窗口类对象的内存管理(生命周期模型),我绕了一大圈子。实在是,内存管理太重要了,花多少口舌介绍它都不过分。我曾经见到这样一句话:"C++程序员觉得内存...
  • 在sql server 2008 中不小心删除或者隐藏了对象资源管理器, 那么从查看里打不开对象资源管理器,只能如下这种显示,在查看里设置全屏才能调出对象资源管理器,很不方便我们的使用。 要找回对象资源管理器,...
  • 管理 VS. 面向对象设计

    万次阅读 热门讨论 2011-10-07 13:04:27
    管理,往往就是给你一堆事,然后再给你一些人,OK,你去做吧。这是你的使命。下面我们来做类比吧。 首先一个问题,你是认为人重要,还是事重要?这个问题我问过很多人,今天我才清晰地认识到这个问题其实很好回答。...
  • Spring的bean管理(注解创建对象

    千次阅读 2017-05-29 22:30:29
    Spring的bean管理(注解创建对象)  AOP  (1)aop概述  (2)aop底层原理  (3)aop操作相关术语 Spring的bean管理(注解) 注解介绍  1.代码里面特殊标记,使用注解可以完成功能。  2.注解写法@...
  • 面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是...
  • 浅谈权限管理对象模型和实现

    千次阅读 2004-01-12 17:11:00
    浅谈权限管理对象模型和实现 beegee (2003-7-16) 目录: 1.权限管理问题的分析 1.1权限管理简要分析 1.2电子政务系统的权限管理 1.3商业化应用系统的权限管理 1.4他山之石 2.权限管理子系统设计 2.1权限管理...
  • 在开发的过程中,难免会碰到需要在工具类中使用由spring管理对象的情况,但是我们都知道,工具类中的静态方法中无法引用spirng容器中的对象(被spring管理对象不是静态的,静态方法中无法调用),那么该如何才能...
  • 自我管理对象的特点自我管理的对象有以下特点:a.  有固定的生命周期,生命周期结束后,自我销毁b.  对象的使用者只需要负责创建,不用负责销毁.c.  在创建时,传入小对象执行所需的上下文(context)d.  在生命...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,023,570
精华内容 809,428
关键字:

属于管理对象的是