非常不错的Spring学习笔记(转)

链接地址:http://www.cnblogs.com/cyjch/archive/2012/02/06/2340415.html

Spring学习笔记( 1 )----简单的实例
---------------------------------
 
首先需要准备Spring包,可从官方网站上下载。
 
下载解压后,必须的两个包是spring.jar和commons-logging.jar。此外为了便于测试加入了JUnit包。
 
在Myeclipse中创建Java项目。
 
编写一个接口类,为了简单,只加入了一个方法。
 
Java代码 
1 . package  com.szy.spring.interfacebean; 
2
3 . public  interface  PersonBean 
4 .{ 
5 .    void  show(); 
6 .} 
  
  然后写一个类实现这个接口。
  
 
 
Java代码 
1 . package  com.szy.spring.implbean; 
2 . import  com.szy.spring.interfacebean.PersonBean; 
3
4 . public  class  UserBean implements  PersonBean 
5 .{ 
6
7 .    public  void  show() 
8 .    { 
9 .        System.out.println( "Hello Kuka" ); 
10 .    } 
11
12 .} 
  
  
  
  
  
以上的过程我们再熟悉不过了,下面开始加入Spring的内容了。首先从下载的Sping包中找到配置文件,删除不需要的,找到最原始的部分:
  
 
 
Xml代码 
1 .<?xml version= "1.0"  encoding= "UTF-8" ?> 
2 .<beans xmlns= "http://www.springframework.org/schema/beans" 
3 .    xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 
4 .    xmlns:context= "http://www.springframework.org/schema/context" 
5 .    xmlns:tx= "http://www.springframework.org/schema/tx" 
6 .    xsi:schemaLocation="http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
7 .                http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
8 .                http: //www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
9
10 .</beans> 
  
  
  
我们在配置文件中加入我们的bean信息
  
 
 
Xml代码 
1 .<bean id= "userBean"  class = "com.szy.spring.implbean.UserBean"  /> 
  
  其中id作为标识符, class 为类的包路径。
  
这样我们的配置文件就写好了,完整的配置文件呢如下。
  
 
 
Xml代码 
1 .<?xml version= "1.0"  encoding= "UTF-8" ?> 
2 .<beans xmlns= "http://www.springframework.org/schema/beans" 
3 .    xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 
4 .    xmlns:context= "http://www.springframework.org/schema/context" 
5 .    xmlns:tx= "http://www.springframework.org/schema/tx" 
6 .    xsi:schemaLocation="http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
7 .                http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
8 .                http: //www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
9
10 .    <bean id= "userBean"  class = "com.szy.spring.implbean.UserBean"  /> 
11 .</beans> 
  
  
  
  
  
最后我们创建一个测试类测试:
  
 
 
Java代码 
1 . package  com.szy.spring.test; 
2
3 . import  org.junit.Test; 
4 . import  org.springframework.context.ApplicationContext; 
5 . import  org.springframework.context.support.ClassPathXmlApplicationContext; 
6 . import  com.szy.spring.interfacebean.PersonBean; 
7
8
9 . public  class  TestClass 
10 .{ 
11 .    @Test 
12 .    public  void  testMethod() throws  Exception 
13 .    { 
14 .        //读取配置文件 
15 .        ApplicationContext ctx= new  ClassPathXmlApplicationContext( "applicationContext.xml" ); 
16 .        //获取UserBean的实例 
17 .        PersonBean bean=(PersonBean)ctx.getBean( "userBean" ); 
18 .        //调用方法 
19 .        bean.show(); 
20 .    } 
21 .} 
 
运行,输入如下结果:
  
 
结果代码 
1 .Hello Kuka 
 
Ok,我们的第一个Spring程序成功运行。
 
 
 
Sping学习笔记( 2 )----实例化Bean的三种方式
-------------------------------------------
Spring的实例化Bean有三种方式:
  
  使用类构造器直接实例化
  
  使用静态工厂的方法实例化
  
  使用实例工厂方法实例化
  
  
  
三种方式对应的配置如下
  
 
 
Xml代码 
1 .<?xml version= "1.0"  encoding= "UTF-8" ?> 
2 .<beans xmlns= "http://www.springframework.org/schema/beans" 
3 .        xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 
4 .        xmlns:context= "http://www.springframework.org/schema/context" 
5 .        xmlns:tx= "http://www.springframework.org/schema/tx" 
6 .        xsi:schemaLocation="http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
7 .                http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
8 .                http: //www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
9 .        <!-- 使用类构造器直接实例化 -->   
10 .        <bean id= "userBean1"  class = "com.szy.spring.implbean.UserBean"  /> 
11 .        <!-- 使用静态工厂的方法实例化 --> 
12 .        <bean id= "userBean2"  class = "com.szy.spring.factory.BeanFactory"  factory-method= "UserBeanService"  /> 
13 .        <!-- 使用实例工厂方法实例化 --> 
14 .        <bean id= "factory"  class = "com.szy.spring.factory.BeanFactory"  /> 
15 .        <bean id= "userBean3"  factory-bean= "factory"  factory-method= "getUserBeanService"  /> 
16 .</beans> 
  
  
  
  
  
其中BeanFactory类的代码如下
  
 
 
Java代码 
1 . package  com.szy.spring.factory; 
2
3 . import  com.szy.spring.implbean.UserBean; 
4 . import  com.szy.spring.interfacebean.PersonBean; 
5
6 . public  class  BeanFactory 
7 .{ 
8 .    //使用静态工厂的方法实例化使用 
9 .    public  static  PersonBean UserBeanService() 
10 .    { 
11 .        return  new  UserBean(); 
12 .    } 
13 .     
14 .    public  PersonBean getUserBeanService() 
15 .    { 
16 .        return  new  UserBean(); 
17 .    } 
18 .} 
  
  
  
在这三种方式中我们最常用的还是第一种。
 
 
 
 
 
 
 
Spring学习笔记( 3 )----编码剖析Spring管理Bean的原理
--------------------------------------------------
 
 
Xml代码 
1 .<?xml version= "1.0"  encoding= "UTF-8" ?> 
2 .<beans xmlns= "http://www.springframework.org/schema/beans" 
3 .        xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 
4 .        xmlns:context= "http://www.springframework.org/schema/context" 
5 .        xmlns:tx= "http://www.springframework.org/schema/tx" 
6 .        xsi:schemaLocation="http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
7 .                http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
8 .                http: //www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
9 .        <bean id= "userBean"  class = "com.szy.spring.implbean.UserBean"  /> 
10 .</beans> 
  
  
  
Spring的配置文件中记录了类的包路径,因此我们首先是要读入配置文件。在配置文件中Bean有id和 class 两个属性,我们首先定义一个Bean类,包含这两个属性:
  
  
  
 
 
Java代码 
1 . package  com.szy.spring.implbean; 
2
3 . public  class  Bean 
4 .{ 
5 .    private  String id; 
6 .    private  String className; 
7 .    public  String getId() 
8 .    { 
9 .        return  id; 
10 .    } 
11 .    public  void  setId(String id) 
12 .    { 
13 .        this .id = id; 
14 .    } 
15 .    public  String getClassName() 
16 .    { 
17 .        return  className; 
18 .    } 
19 .    public  void  setClassName(String className) 
20 .    { 
21 .        this .className = className; 
22 .    } 
23 .     
24 .} 
25 .  
  
由于配置文件是xml文件,在这里使用Jdom包操作xml文件,读入配置文件中的Bean信息。
  
 
 
Java代码 
1 . /**
2.     * 读取xml配置文件
3.     * @param fileName 配置文件名
4.     */ 
5 .    private  void  readXML(String fileName) 
6 .    { 
7 .        // 寻找配置文件 
8 .        URL xmlPath = this .getClass().getClassLoader().getResource(fileName); 
9 .        Document doc = null
10 .        Element root = null
11 .        try 
12 .        { 
13 .            SAXBuilder sb = new  SAXBuilder( false ); 
14 .            doc = sb.build( new  FileInputStream( new  File(xmlPath.toURI()))); 
15 .            // 设置命名空间 
16 .            Namespace xhtml = Namespace.getNamespace( "xhtml"
17 .                    "http://www.springframework.org/schema/beans" ); 
18 .            root = doc.getRootElement(); // 获取根元素 
19 .            List<Element> list = root.getChildren( "bean" , xhtml); //获取全部bean节点 
20 .            for  (Element element : list) // 遍历节点,取得每个节点的属性 
21 .            { 
22 .                String id = element.getAttributeValue( "id" ); 
23 .                String className = element.getAttributeValue( "class" ); 
24 .                Bean bean = new  Bean(); 
25 .                bean.setId(id); 
26 .                bean.setClassName(className); 
27 .                beanList.add(bean); 
28 .            } 
29 .        } catch  (Exception e) 
30 .        { 
31 .            e.printStackTrace(); 
32 .        } 
33
34 .    } 
  
  
  
  其中beanList是一个List对象,因为在配置文件中存在很多Bean。
  
  
  
得到了所有的Bean对象后,下面就实例化每个Bean对象,结果存放在Map对象中。
  
  
  
 
 
Java代码 
1 . /**
2.     * bean的实例化
3.     */ 
4 .    private  void  instanceBeans() 
5 .    { 
6 .        for  (Bean bean : beanList) 
7 .        { 
8 .            try 
9 .            { 
10 .                if  (bean.getClassName() != null  && ! "" .equals(bean.getClassName().trim())) 
11 .                    beanObject.put(bean.getId(), Class.forName(bean.getClassName()).newInstance()); 
12 .            } catch  (Exception e) 
13 .            { 
14 .                e.printStackTrace(); 
15 .            } 
16 .        } 
17
18 .    } 
  
  其中beanObject为Map对象。
  
  
  
最后再加入一个方法,方便外部能获取Map中的对象
  
 
 
Java代码 
1 . /**
2.     * 获取bean实例
3.     * @param beanName 配置文件中bean的Id
4.     * @return
5.     */ 
6 .    public  Object getBean(String beanName) 
7 .    { 
8 .        return  this .beanObject.get(beanName); 
9 .    } 
  
  完整的MyClassPathXMLApplicationContext见附件中的代码。
  
  
  
下面测试MyClassPathXMLApplicationContext类。
  
 
 
Java代码 
1 . @Test 
2 .    public  void  testMethod() throws  Exception 
3 .    { 
4 .        //读取配置文件 
5 .        MyClassPathXMLApplicationContext ctx= new  MyClassPathXMLApplicationContext( "applicationContext.xml" ); 
6 .        //获取UserBean的实例 
7 .        PersonBean bean=(PersonBean)ctx.getBean( "userBean" ); 
8 .        //调用方法 
9 .        bean.show(); 
10 .    } 
  
  
  
输出结果
  
 
 
结果代码 
1 .Hello Kuka 
  
  
  
成功。
  
上面仅是简单的演示了Spring管理Bean的原理,但是在实际操作中还需要考虑很对其它因素。
 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值