Spring4.0MVC学习资料,ApplicationContext中的方法详解(三)

做为java开源的一部分,spring框架一直排在老大的位置。Spring4.0 是 Spring 推出的一个重大版本升级,进一步加强了 Spring 作为 Java 领域第一开源平台的地位。Spring4.0 引入了众多 Java 开发者期盼的新特性,如泛型依赖注入、SpEL、校验及格式化框架、Rest风格的 WEB 编程模型等。这些新功能实用性强、易用性高,可大幅降低 JavaEE 开发的难度,同时有效提升应用开发的优雅性。为了方便开发,Spring的ApplicationContext类,给我们提供了很多实用的方法,我在这里进行一下讲解。

看配置代码(applicationContext2.xml):

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.             http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  8.            http://www.springframework.org/schema/context   
  9.            http://www.springframework.org/schema/context/spring-context-4.0.xsd  
  10.            http://www.springframework.org/schema/aop   
  11.            http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
  12.            http://www.springframework.org/schema/tx   
  13.            http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">  
  14.              
  15.     <description>  
  16.         herman  
  17.     </description>  
  18.       
  19.     <alias name="nn" alias="abc"/>  
  20.       
  21.     <bean class="com.herman.ss.pojo.Person"></bean>  
  22.       
  23.     <bean id="person0" class="com.herman.ss.pojo.Person" name="a,b,c,d,e"></bean>  
  24.       
  25.     <bean id="person1" class="com.herman.ss.pojo.Person" name="m,n">  
  26.         <property name="age" value="20"></property>  
  27.         <property name="name" value="herman"></property>  
  28.     </bean>  
  29.       
  30.     <bean id="person2" class="com.herman.ss.pojo.Person">  
  31.         <property name="age">  
  32.             <value>20</value>  
  33.         </property>  
  34.         <property name="name">  
  35.             <value>herman</value>  
  36.         </property>  
  37.     </bean>  
  38.       
  39.     <bean id="person3" class="com.herman.ss.pojo.Person">  
  40.         <constructor-arg name="name" value="herman"></constructor-arg>  
  41.         <constructor-arg name="age" value="20"></constructor-arg>  
  42.     </bean>  
  43.       
  44.     <bean id="person4" class="com.herman.ss.pojo.Person">  
  45.         <constructor-arg type="int" value="20"></constructor-arg>  
  46.         <constructor-arg type="java.lang.String" value="herman"></constructor-arg>  
  47.     </bean>  
  48.       
  49.     <bean id="house" class="com.herman.ss.pojo.House">  
  50.         <constructor-arg>  
  51.             <null></null>  
  52.         </constructor-arg>  
  53.         <constructor-arg name="address" value="Shanghai"></constructor-arg>  
  54.         <constructor-arg name="price" value="10000000.12"></constructor-arg>  
  55.     </bean>  
  56.       
  57.     <bean id="person5" class="com.herman.ss.pojo.Person">  
  58.         <constructor-arg type="int" value="20"></constructor-arg>  
  59.         <constructor-arg type="java.lang.String" value="herman"></constructor-arg>  
  60.         <constructor-arg type="com.herman.ss.pojo.House" ref="house"></constructor-arg>  
  61.     </bean>  
  62.       
  63.     <bean id="person6" class="com.herman.ss.pojo.Person">  
  64.         <constructor-arg type="int" value="20" index="1"></constructor-arg>  
  65.         <constructor-arg value="herman" index="0"></constructor-arg>  
  66.         <constructor-arg type="com.herman.ss.pojo.House" ref="house"></constructor-arg>  
  67.     </bean>  
  68. </beans>  
在看测试代码:
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.herman.ss.test;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7. import org.springframework.stereotype.Component;  
  8.   
  9. import com.herman.ss.pojo.House;  
  10. import com.herman.ss.pojo.Person;  
  11.   
  12. public class Test2 {  
  13.       
  14.     /** 
  15.      * @see 使用getBeansOfType获取bean对象集合 
  16.      * @author Herman.Xiong 
  17.      * @date 2014年8月6日15:38:10 
  18.      */  
  19.     public static void test0(){  
  20.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  21.         Map<String, Person> map=ctx.getBeansOfType(Person.class);  
  22.         for (String key : map.keySet()) {  
  23.             System.out.println("key= "+ key + " and value= " + map.get(key));  
  24.         }  
  25.     }  
  26.       
  27.     /** 
  28.      * @see 使用containsBean判断bean对象是否存在 
  29.      * @author Herman.Xiong 
  30.      * @date 2014年8月6日15:40:18 
  31.      */  
  32.     public static void test1(){  
  33.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  34.         System.out.println(ctx.containsBean("person0"));  
  35.     }  
  36.       
  37.     /** 
  38.      * @see 使用getBeanDefinitionCount统计定义bean对象的数量 
  39.      * @author Herman.Xiong 
  40.      * @date 2014年8月6日15:42:34 
  41.      */  
  42.     public static void test2(){  
  43.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  44.         System.out.println(ctx.getBeanDefinitionCount());  
  45.     }  
  46.       
  47.     /** 
  48.      * @see 使用getBeanDefinitionNames获取定义的bean的名字 
  49.      * @author Herman.Xiong 
  50.      * @date 2014年8月6日15:45:50 
  51.      */  
  52.     public static void test3(){  
  53.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  54.         String beanName []= ctx.getBeanDefinitionNames();  
  55.         for (int i = 0; i < beanName.length; i++) {  
  56.             System.out.println(beanName[i]);  
  57.         }  
  58.     }  
  59.       
  60.     /** 
  61.      * @see 根据bean名字获取bean的别名 
  62.      * @author Herman.Xiong 
  63.      * @date 2014年8月6日16:20:54 
  64.      */  
  65.     public static void test4(){  
  66.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  67.         String[] aliases=ctx.getAliases("a");  
  68.         for (int i = 0; i < aliases.length; i++) {  
  69.             System.out.println(aliases[i]);  
  70.         }  
  71.         //person0,b,e,c,d  
  72.         /** 
  73.          * 因为bean的名字由两部分组成: 
  74.          * (1) 默认名字。当定义了bean的id属性时,默认名字为id属性的值; 
  75.          *  未定义id时,取name属性的第一个值;id和name均未定义时,取类名。 
  76.          * (2) 别名,除默认名字以外的其他名字。 
  77.          */  
  78.     }  
  79.       
  80.     /** 
  81.      * @see isPrototype,isSingleton判断是否为多例,单例,原型 
  82.      * @author Herman.Xiong 
  83.      * @date 2014年8月6日16:25:56 
  84.      */  
  85.     public static void test5(){  
  86.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  87.         System.out.println(ctx.isPrototype("person0"));  
  88.         System.out.println(ctx.isSingleton("person0"));  
  89.         System.out.println(ctx.isTypeMatch("person0", House.class));  
  90.     }  
  91.       
  92.     /** 
  93.      * @see 使用isTypeMatch方法判断bean对象是否为指定类型 
  94.      */  
  95.     public static void test6(){  
  96.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  97.         System.out.println(ctx.isTypeMatch("person0", House.class));  
  98.     }  
  99.       
  100.     /** 
  101.      * @see 其他测试 
  102.      */  
  103.     public static void test7(){  
  104.         ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");  
  105.         System.out.println(ctx.getApplicationName());//模型的应用的名字  
  106.         System.out.println(ctx.getDisplayName());  
  107.         System.out.println(ctx.getStartupDate());  
  108.         System.out.println(ctx.findAnnotationOnBean("person0", Component.class));//返回对应的注解实例(参数指定了Bean的配置名称和需要返回的注解的类型)  
  109.         System.out.println(ctx.getBeanNamesForAnnotation(Component.class));//返回所有使用了对应注解annotationType的Bean  
  110.         /** 
  111.          * ConfigurableBeanFactory  
  112.             这个接口定义了设置父容器(ParentBeanFactory),设置类装载器, 
  113.             设置属性编辑器(PropertyEditorRegistrar)等一系列功能,增强了IoC容器的可定制性  
  114.             AutowireCapableBeanFactory  
  115.             定义了一些自动装配Bean的方法  
  116.             SingletonBeanRegistry  
  117.             这个接口没有继承BeanFactory,它主要定义了在运行期间向容器注册单例模式Bean的方法  
  118.             BeanDefinitionRegistry  
  119.             这个接口没有继承BeanFactory,它主要定义了向容器中注册BeanDefinition对象的方法 
  120.             在Spring配置文件中,每一个<bean>节点元素在Spring容器中都是由一个BeanDefinition对象描述的) 
  121.          */  
  122.     }  
  123.       
  124.     public static void main(String[] args) {  
  125.         //test0();  
  126.         //test1();  
  127.         //test2();  
  128.         //test3();  
  129.         //test4();  
  130.         //test5();  
  131.         //test6();  
  132.         test7();  
  133.     }  
  134. }  
自己运行测试一把,是不是感觉很爽。

欢迎大家关注我的个人博客!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值