1.复制xml到container/annotation下
2.新建Waiter类,构造函数,初始化以及销毁函数
3.在Waiter方法体前面加上@Component
4.xml中添加组件扫描代码
5.test1测试是否创建了bean,注意,xml中没有像之前一样去配置bean的id等属性,而是扫描组件方式,注意,组件扫描方式,那么bean的id即为该类名的小写
6.test2测试单例模式下只能创建一个bean对象,在Waiter方法体前面加上@Scope("prototype"),则为false
7.在Waiter的init方法前,destroy前分别加上@PostConstruct,@PreDestroy
8.将范围重新修改为单例模式,调用ac.close,test3测试bean的生命周期
9.test4测试不实例化bean,也会预实例化bean。在Waiter前加上@Lazy(true),则不再预实例化

Water.java:

package container.annotation;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component("wt")
//@Component
//@Scope("prototype")
@Scope("singleton")
@Lazy(true)
public class Waiter {

public Waiter() {
System.out.println("Waiter的无参构造器");
}

@PostConstruct
public void init(){
System.out.println("Waiter的init方法............");
}
@PreDestroy
public void destroy(){
System.out.println("Waiter的destroy方法............");
}
}

xml:

<!-- 开启组件扫描,容器会检查container.annotation包及其子包下面的所有的类,
如果这些类包含了特定的注解,就会将其作为一个bean来进行管理 -->
<context:component-scan
base-package="container.annotation"/>

TestCase:

package container.annotation;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestCase {

@Test
public void test1(){
String cfg = "container/annotation/applicationContext.xml";
ApplicationContext ac =
new ClassPathXmlApplicationContext(cfg);
//Waiter wt = ac.getBean("waiter",Waiter.class);
Waiter wt = ac.getBean("wt",Waiter.class);
System.out.println(wt);
}

@Test
public void test2(){
String cfg = "container/annotation/applicationContext.xml";
ApplicationContext ac =
new ClassPathXmlApplicationContext(cfg);
//id为类名首字母小写
Waiter wt = ac.getBean("waiter",Waiter.class);
Waiter wt2 = ac.getBean("waiter",Waiter.class);
System.out.println(wt==wt2);
}

@Test
public void test3(){
String cfg = "container/annotation/applicationContext.xml";
AbstractApplicationContext ac =
new ClassPathXmlApplicationContext(cfg);
Waiter wt = ac.getBean("waiter",Waiter.class);
ac.close();
}

@Test
public void test4(){
String cfg = "container/annotation/applicationContext.xml";
AbstractApplicationContext ac =
new ClassPathXmlApplicationContext(cfg);

}

}

springday02-go4的更多相关文章

  1. Spring-day02

    Annotation复习:1,Annotation:作为类型的元数据; 1,给类型加标记; 2,annotation可以添加各种类型的属性;2,Annotation的上的标记: 1),target:标 ...

  2. jQuery动画与特效详解

    本文主要是讲解和学习jQuery的自动显隐,渐入渐出等. 1.显示和隐藏hide()和show() 对于动画来说,显示和隐藏是最基本的效果之一,本节简单介绍jQuery的显示和隐藏. 代码如下: &l ...

  3. OC基础--类的本质

    类的本质: 类的本质其实也是一个对象(类对象),只要有了类对象, 将来就可以通过类对象来创建实例对象 程序中第一次使用该类的时候被创建,在整个程序中只有一份.此后每次使用都是这个类对象,它在程序运行时 ...

  4. window下安装jupyter

    1.Install [Anaconda](https://docs.continuum.io/anaconda/install#anaconda-install) 实际上安装了anaconda就已经安 ...

  5. Linux Network Related Drive

    catalog . 通过套接字通信 . 网络实现的分层模型 . 网络命名空间 . 套接字缓冲区 . 网络访问层 . 网络层 . 传输层 . 应用层 . 内核内部的网络通信 1. 通过套接字通信 Lin ...

  6. 二、JavaScript语言--事件处理--DOM事件探秘

    第一章 事件流 事件:是文档或浏览器窗口中发生的.特定的交互瞬间.JavaScript和HTML之间的交互都是通过事件来实现的. 事件流:描述的是从页面中接受事件的顺序 IE:事件冒泡流 Netsca ...

  7. 【原】iOS多线程之异步任务+并行队列情况与异步任务+串行队列(主队列)情况

    异步任务+并行队列 把异步任务放到并行队列进行执行,异步任务会在不同的线程中执行. /*异步执行+并行队列*/ - (IBAction)clickBasic1:(UIButton *)sender { ...

  8. JQuery的动画及其幻灯片效果

    1.显示和隐藏hide()和show() 对于动画来说,显示和隐藏是最基本的效果之一,简单介绍jQuery的显示和隐藏. <script type="text/javascript&q ...

  9. 使用Python一步一步地来进行数据分析总结

    原文链接:Step by step approach to perform data analysis using Python译文链接:使用Python一步一步地来进行数据分析--By Michae ...

  10. ADF_Data Binding系列2_使用URL Service Data Control

    2015-02-16 Created By BaoXinjian

随机推荐

  1. pro10

    1.本次课学习到的知识点: 什么是数组?为什么要使用数组?如何定义数组? 如何引用数组元素? 2. 实验过程中遇到的问题及解决方法: 在最后一个试验中,在输出最大小标那里进行了仔细的思考,刚开始思考应 ...

  2. nrf51822裸机教程-PWM

    先简单介绍一下PWM的原理. 原理很简单. 假设COUNTER是个从0开始递增的计数器.  我们设置两个值 counter0 和counter1 在 COUNTER 计数到counter0的值时候翻转 ...

  3. 简述AFN(AFNetWorking 2.X)的实现分析和简单使用【转】

    [转载] Axc注:版本为AFNetWorking 2.6    3.0需要修改大部分对象 一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯 ...

  4. 通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)

    其中部分代码为汇编:由此可见oc的runtime的灵活性和能力.此代码仅供参考 // ---------------------------------------------------- // R ...

  5. QT中的SOCKET编程(QT-2.3.2)

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  6. JQuery中国省市区无刷新三级联动查询

    之前有写过用<Ajax控件来实现中国的省市区无刷新查询> 今天用JQuery来实现,用Ajax控件和JQuery的优缺点就先不说了. 效果图如下: 下面来结合代码来详细说明一下如何用JQu ...

  7. iOS获取设备型号、设备类型等信息

    摘自 :http://www.mamicode.com/info-detail-1165460.html 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然 ...

  8. SQL Server select 将类型相同的行合并

    select Category from(select distinct Category from T_Detail where CREATED_BY= @CREATED_BY AND Record ...

  9. 利用Aspose.Word控件实现Word文档的操作

    Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般 ...

  10. Upgrade Image&ntext to varbinarymax&nvarchar(max)

    CREATE PROCEDURE SP_EXEC_WITH_LOG(@I_TICKETNO VARCHAR(10),@I_SQLSTR nvarchar(max))ASBEGIN    DECLARE ...