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

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

看配置代码(applicationContext2.xml):



           
    
    	herman
    
    
    
    
	
	
	
	
	
		
		
	
	
	
		
			20
		
		
			herman
		
	
	
	
		
		
	
	
	
		
		
	
	
	
		
			
		
		
		
	
	
	
		
		
		
	
	
	
		
		
		
	
在看测试代码:
package com.herman.ss.test;

import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

import com.herman.ss.pojo.House;
import com.herman.ss.pojo.Person;

public class Test2 {
	
	/**
	 * @see 使用getBeansOfType获取bean对象集合
	 * @author Herman.Xiong
	 * @date 2014年8月6日15:38:10
	 */
	public static void test0(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		Map map=ctx.getBeansOfType(Person.class);
		for (String key : map.keySet()) {
			System.out.println("key= "+ key + " and value= " + map.get(key));
		}
	}
	
	/**
	 * @see 使用containsBean判断bean对象是否存在
	 * @author Herman.Xiong
	 * @date 2014年8月6日15:40:18
	 */
	public static void test1(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		System.out.println(ctx.containsBean("person0"));
	}
	
	/**
	 * @see 使用getBeanDefinitionCount统计定义bean对象的数量
	 * @author Herman.Xiong
	 * @date 2014年8月6日15:42:34
	 */
	public static void test2(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		System.out.println(ctx.getBeanDefinitionCount());
	}
	
	/**
	 * @see 使用getBeanDefinitionNames获取定义的bean的名字
	 * @author Herman.Xiong
	 * @date 2014年8月6日15:45:50
	 */
	public static void test3(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		String beanName []= ctx.getBeanDefinitionNames();
		for (int i = 0; i < beanName.length; i++) {
			System.out.println(beanName[i]);
		}
	}
	
	/**
	 * @see 根据bean名字获取bean的别名
	 * @author Herman.Xiong
	 * @date 2014年8月6日16:20:54
	 */
	public static void test4(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		String[] aliases=ctx.getAliases("a");
		for (int i = 0; i < aliases.length; i++) {
			System.out.println(aliases[i]);
		}
		//person0,b,e,c,d
		/**
		 * 因为bean的名字由两部分组成:
		 * (1) 默认名字。当定义了bean的id属性时,默认名字为id属性的值;
		 *  未定义id时,取name属性的第一个值;id和name均未定义时,取类名。
		 * (2) 别名,除默认名字以外的其他名字。
		 */
	}
	
	/**
	 * @see isPrototype,isSingleton判断是否为多例,单例,原型
	 * @author Herman.Xiong
	 * @date 2014年8月6日16:25:56
	 */
	public static void test5(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		System.out.println(ctx.isPrototype("person0"));
		System.out.println(ctx.isSingleton("person0"));
		System.out.println(ctx.isTypeMatch("person0", House.class));
	}
	
	/**
	 * @see 使用isTypeMatch方法判断bean对象是否为指定类型
	 */
	public static void test6(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		System.out.println(ctx.isTypeMatch("person0", House.class));
	}
	
	/**
	 * @see 其他测试
	 */
	public static void test7(){
		ApplicationContext ctx=new ClassPathXmlApplicationContext("com/herman/ss/config/applicationContext2.xml");
		System.out.println(ctx.getApplicationName());//模型的应用的名字
		System.out.println(ctx.getDisplayName());
		System.out.println(ctx.getStartupDate());
		System.out.println(ctx.findAnnotationOnBean("person0", Component.class));//返回对应的注解实例(参数指定了Bean的配置名称和需要返回的注解的类型)
		System.out.println(ctx.getBeanNamesForAnnotation(Component.class));//返回所有使用了对应注解annotationType的Bean
		/**
		 * ConfigurableBeanFactory 
			这个接口定义了设置父容器(ParentBeanFactory),设置类装载器,
			设置属性编辑器(PropertyEditorRegistrar)等一系列功能,增强了IoC容器的可定制性 
			AutowireCapableBeanFactory 
			定义了一些自动装配Bean的方法 
			SingletonBeanRegistry 
			这个接口没有继承BeanFactory,它主要定义了在运行期间向容器注册单例模式Bean的方法 
			BeanDefinitionRegistry 
			这个接口没有继承BeanFactory,它主要定义了向容器中注册BeanDefinition对象的方法
			在Spring配置文件中,每一个节点元素在Spring容器中都是由一个BeanDefinition对象描述的)
		 */
	}
	
	public static void main(String[] args) {
		//test0();
		//test1();
		//test2();
		//test3();
		//test4();
		//test5();
		//test6();
		test7();
	}
}
自己运行测试一把,是不是感觉很爽。

欢迎大家关注我的个人博客!!!!
如有不懂,疑问或者欠妥的地方,请加QQ群:135430763   进行反馈,共同学习!

你可能感兴趣的:(java,SpringMVC)