`
jiqimiao
  • 浏览: 58779 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

Spring笔记之一(初探Spring)

 
阅读更多

转贴处 http://www.blogjava.net/improviser/archive/2007/09/24/147650.html

初探Spring程序,程序如下:


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1BeanNaming.java
2packagespring.beantest;
3
4importorg.springframework.beans.factory.BeanFactory;
5importorg.springframework.beans.factory.xml.XmlBeanFactory;
6importorg.springframework.core.io.FileSystemResource;
7
8publicclassBeanNaming{
9publicstaticvoidmain(String[]args)
10{
11BeanFactoryfactory=newXmlBeanFactory(newFileSystemResource("src/applicationContext.xml"));
12
13Strings1=(String)factory.getBean("name1");
14Strings2=(String)factory.getBean("name2");
15Strings3=(String)factory.getBean("name3");
16Strings4=(String)factory.getBean("name4");
17
18System.out.println((s1==s2));
19System.out.println((s2==s3));
20System.out.println((s3==s4));
21
22String[]x=factory.getAliases("name3");
23for(Stringstr:x)
24{
25System.out.println(str);
26}
27
28}
29}
30
31applicationContext.xml
32<?xmlversion="1.0"encoding="UTF-8"?>
33<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
34<beans>
35<!--aliasingexamples-->
36<beanid="name1"name="name2,name3,name4"class="java.lang.String"/>
37</beans>

输出结果为:
true
true
true
name1
name4
name2


可以看出,使用中id属性和name属性几乎没有任何区别。调用beanfactory.getAliases(string)的方法时,传入的参数可以是任意一个bean名字,输出的别名则是除去作为参数本身之外的所有 bean名。


在写 applicationContxt.xml文件时,如果没有定义<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">,则会抛出Cannot find the declaration of element 'beans' 异常。

以上使用BeanFactory对配置文件进行加载,BeanFactory,是根据配置文件负责创建Bean的实例,并负责Bean的生命周期的管理- --,包括Bean的生成与销毁、Bean的创建方式的识别(是否为singleton)、Bean的各个属性的设定、依赖关系的建立等。
ApplicationContext接口,提供了国际化、事件处理及beans在context中的自查能力。它也可创建具有层次结构context环境,将bean的作用域和可访问区域限制在应用程序的一个特定部分中。下面演示如何使用ApplicationContext接口。



<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
2<beans>
3<beanid="bean_1"class="BeanTest"/>
4<beanid="bean_2"class="BeanTest"/>
5</beans>
6
7
8publicclassBeanTest{
9publicvoidtest(){
10System.out.println("test..");
11}
12}
13
14
15importorg.springframework.context.ApplicationContext;
16importorg.springframework.context.support.FileSystemXmlApplicationContext;
17
18publicclassBeanNameExample{
19
20publicstaticvoidmain(String[]args){
21ApplicationContextctx=newFileSystemXmlApplicationContext(
22"build/applicationContext.xml");
23
24BeanTestbeanOne=(BeanTest)ctx.getBean("bean_1");
25BeanTestbeanTwo=(BeanTest)ctx.getBean("bean_2");
26
27beanOne.test();
28beanTwo.test();
29}
30}
31
综上,ApplicationContext与BeanFactory的不同点
BeanFactory提供了针对JavaBean的管理功能,而ApplicationContext提供了一个更为框架化的实现(从上面的示例中可以看出,BeanFactory的使用方式更加类似一个API,而非Framework style)。ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性。此外, ApplicationContext为与现有应用框架相整合,提供了更为开放式的实现(如对于Web应用,我们可以在web.xml中对 ApplicationContext进行配置)。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics