通俗易懂的Spring学习二、IOC之bean的获取

1、加注解的类或xml里配的bean,最终都会加载到bean工厂里;

2、BeanFactory 有两个重要的子类:BeanDefinitionRegistry和XMLBeanFactory;

BeanDefinitionRegistry,他的工作是记录bean的个人信息,如:id是多少,class路径,是不是单例,需不需要懒加载等等;

XmlBeanFactory,他是BeanFactory的最重要的子类,过去是,意思是现在已经被舍弃了,几乎不用了。简单说说下他的用法:

XmlBeanFactory beanFactory = new XmlBeanFactory(resource) 这个recource就是上一篇所说的资源对象;

//获取Bean对象

Text text =  (Text) beanFactory.getBean("text");

3、BeanFactory又扩展了一个类,那就是ApplicationContext

ApplicationContext 与 XmlBeanFactory 最突出的不同点就是 前者在加载资源文件的时候就顺带着把对象给创建好了放在内存里了,而后者则不是。后者是在调用getBean的时候才去创建对象;

ApplicationContext比XmlBeanFactory多了bean的生命周期、资源文件加载,国际化等功能。

4、ApplicationContext有三个核心子类:

ClassPathXMLApplicationContext

WebApplicationContext

FileSystemXmlApplicationContext:

5、获取的方法:

第一种:

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/bean.xml");

还可以:多个文件同时加载:

new ClassPathXmlApplicationContext(new String[]{"classpath:bean.xml","classpath:bean2.xml","d://bean.xml"});

第二种:

ApplicationContext context = new FileSystemXmlApplicationContext("file:/D:/tzprojects/tzspring02/src/bean.xml");

第三种  加载某个包下的所有加注解的类
ApplicationContext context = new AnnotationConfigApplicationContext("com.ioc.ioc3");
UserDao userDao = (UserDao) context.getBean("userDao"); 
userDao.getUser();

第四种  利用jsp的内置对象获取

web.xml里的配置:

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:bean*.xml</param-value> 
<!--     <param-value>/WEB-INF/classes/bean.xml</param-value> -->
 </context-param>
 
 <!-- web容器的监听器 -->
 <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

index.jsp里的配置:

<%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%@page import="com.ioc.ioc.Student"%>
<%@page import="org.springframework.web.context.WebApplicationContext"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	
	//1:web.xml进行注册
 	//WebApplicationContext context = (WebApplicationContext)application.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
	WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(application);
	Student student = (Student)context.getBean("student");
	
	
	student.responseAsk("讲课");


%>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值