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 /> --> 1 BeanNaming.java
2 package spring.beantest;
3
4 import org.springframework.beans.factory.BeanFactory;
5 import org.springframework.beans.factory.xml.XmlBeanFactory;
6 import org.springframework.core.io.FileSystemResource;
7
8 public class BeanNaming{
9 public static void main(String[]args)
10 {
11 BeanFactoryfactory = new XmlBeanFactory( new FileSystemResource( " src/applicationContext.xml " ));
12
13 Strings1 = (String)factory.getBean( " name1 " );
14 Strings2 = (String)factory.getBean( " name2 " );
15 Strings3 = (String)factory.getBean( " name3 " );
16 Strings4 = (String)factory.getBean( " name4 " );
17
18 System.out.println((s1 == s2));
19 System.out.println((s2 == s3));
20 System.out.println((s3 == s4));
21
22 String[]x = factory.getAliases( " name3 " );
23 for (Stringstr:x)
24 {
25 System.out.println(str);
26 }
27
28 }
29 }
30
31 applicationContext.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
8 public class BeanTest{
9 public void test(){
10 System.out.println( " test.. " );
11 }
12 }
13
14
15 import org.springframework.context.ApplicationContext;
16 import org.springframework.context.support.FileSystemXmlApplicationContext;
17
18 public class BeanNameExample{
19
20 public static void main(String[]args){
21 ApplicationContextctx = new FileSystemXmlApplicationContext(
22 " build/applicationContext.xml " );
23
24 BeanTestbeanOne = (BeanTest)ctx.getBean( " bean_1 " );
25 BeanTestbeanTwo = (BeanTest)ctx.getBean( " bean_2 " );
26
27 beanOne.test();
28 beanTwo.test();
29 }
30 }
31
综上,ApplicationContext与BeanFactory的不同点
BeanFactory提供了针对JavaBean的管理功能,而ApplicationContext提供了一个更为框架化的实现(从上面的示例中可以看出,BeanFactory的使用方式更加类似一个API,而非Framework style)。ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性。此外, ApplicationContext为与现有应用框架相整合,提供了更为开放式的实现(如对于Web应用,我们可以在web.xml中对 ApplicationContext进行配置)。

你可能感兴趣的:(spring笔记)