博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringFramework核心技术一(IOC:使用ICO容器)
阅读量:6693 次
发布时间:2019-06-25

本文共 3118 字,大约阅读时间需要 10 分钟。

使用容器

这ApplicationContext是高级工厂的接口,能够维护不同bean及其依赖项的注册表。使用该方法T getBean(String name, Class requiredType)可以检索bean的实例。


一、

在ApplicationContext可以读取bean定义并访问它们,如下所示:

1.1 怎么使用容器

首先来看一下容器:

这里写图片描述

1.2

有很多同学一上来就是搞一个New,可是这是一个ApplicationContext接口啊。

//接口是不能直接new着用的,这个是重写。ApplicationContext applicationContext = new ApplicationContext(){
...}

1.3

下面这样用才是对的:ClassPathXmlApplicationContext是类

/** * @author:wangdong * @description:怎么使用容器 */public class Test {
public static void main(String[] args) { // create and configure beans //可以从XML文件中读取需要配置Bean并且加载进容器中 ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml"); }

看一下ClassPathXmlApplicationContext类

这里写图片描述

二、下面我们来用一下

package org.springframework.test;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.beans.factory.config.AutowireCapableBeanFactory;import org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader;import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;import org.springframework.context.ApplicationContext;import org.springframework.context.MessageSourceResolvable;import org.springframework.context.NoSuchMessageException;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.GenericApplicationContext;import org.springframework.context.support.GenericGroovyApplicationContext;import org.springframework.core.ResolvableType;import org.springframework.core.env.Environment;import org.springframework.core.io.Resource;import java.io.IOException;import java.lang.annotation.Annotation;import java.util.Locale;import java.util.Map;/** * @author:wangdong * @description:怎么使用容器 */public class Test {    public static void main(String[] args) {        // create and configure beans        ApplicationContext context1 = new ClassPathXmlApplicationContext("services.xml", "daos.xml");        // retrieve configured instance(检索配置实例Bean)        //如果PetStoreService已经创建,并且在上面的.xml文件中已经配置        PetStoreService service = context1.getBean("petStore", PetStoreService.class);        //GenericApplicationContext和ClassPathXmlApplicationContext类似        //只不过这里使用的是.groovy后缀文件        //使用Groovy配置,bootstrapping看起来非常相似,只是一个不同的上下文实现类,它可以感知Groovy(但也理解XML bean定义):        ApplicationContext context2 = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");        //最灵活的变体是GenericApplicationContext与.groovy和.xml结合使用        GenericApplicationContext context3 = new GenericApplicationContext();        //用于.xml后缀的文件        new XmlBeanDefinitionReader(context3).loadBeanDefinitions("services.xml", "daos.xml");        //用于.groovy后缀的文件        new GroovyBeanDefinitionReader(context3).loadBeanDefinitions("services.groovy", "daos.groovy");    }}

可以使用它getBean来检索bean的实例。该ApplicationContext 接口还有其他一些检索bean的方法,但理想情况下,应用程序代码不应该使用它们。事实上,你的应用程序代码根本不应该调用该 getBean()方法,因此完全不依赖于Spring API。例如,Spring与Web框架的集成为各种Web框架组件(如控制器和JSF托管的bean)提供了依赖注入,允许您通过元数据(例如自动装配注释)声明对特定Bean的依赖关系。

未完待续~~~持续更新

你可能感兴趣的文章
一个灵活设置十六进制颜色值的方法
查看>>
JavaScript 工作原理之十四-解析,语法抽象树及最小化解析时间的 5 条小技巧...
查看>>
Java杂记9—NIO
查看>>
算法(四):图解狄克斯特拉算法
查看>>
简单粗暴了解JS的事件的 冒泡 与 捕获
查看>>
css3动画属性整理
查看>>
脚本 用python检测python 批量检查注释率是否达标
查看>>
如何针对性替换数组里的某几个对象
查看>>
git基础整理
查看>>
【前端】 form.get 方式上传对象数组给后台
查看>>
阿里智能工作软件机器人——码栈应用教程,让一切变得自动化
查看>>
Angular service 详解
查看>>
百度研发面经
查看>>
深度解析 Go 语言中「切片」的三种特殊状态
查看>>
Android Things 专题 3 开发环境搭建
查看>>
简述大数据实时处理框架
查看>>
hadoop(1)--前期准备,免密登录
查看>>
ES6 - 函数扩展
查看>>
Linux中apt与apt-get命令的区别与解释(转)
查看>>
原生js 类名操作 增加 删除
查看>>