博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取ApplicationContext 几种方式及作用
阅读量:6296 次
发布时间:2019-06-22

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

总结:有时候我们想获取容器中的bean 代码获取,那么首先要获取工厂对象 ,那么我总结一下几种常用的方式吧。

    基本使用如下

           1.获取数据从applicationContext

     //所有实现类的name	String[] list = applicationContext.getBeanNamesForType(FileService.class);	//单个	//List
list = (List)applicationContext.getBean(FileService.class); System.out.println(Arrays.asList(list)); //对个 key name value 对象 Map map = applicationContext.getBeansOfType(FileService.class); System.out.println(map); //所有bean String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); System.out.println(Arrays.asList(beanDefinitionNames));     //发布一个事件     SpringUtils.publishEvent(new UserRegisterEvent(user));

  

 2.动态注入bean

 

//动态注入beanDefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) ctx.getAutowireCapableBeanFactory();//创建bean信息.BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(Dept.class);//添加属性值beanDefinitionBuilder.addPropertyValue("deptName","快乐风男");defaultListableBeanFactory.registerBeanDefinition("dept", beanDefinitionBuilder.getBeanDefinition());System.out.println(ctx.getBean("dept"));//删除bean.defaultListableBeanFactory.removeBeanDefinition("dept");

  获取几种方式如下:

1.直接注入

@Resourceprivate ApplicationContext ctx;

2.直接文件系统获取

String xmlPath = "WebContent/WEB-INF/config/base/applicationContext.xml";ApplicationContext ac = new FileSystemXmlApplicationContext(xmlPath);

3.classpath 获取

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

4.WebApplicationContextUtils  获取

// Spring中获取ServletContext对象,普通类中可以这样获取ServletContext sc = ContextLoader.getCurrentWebApplicationContext().getServletContext(); // servlet中可以这样获取,方法比较多ServletContext sc = request.getServletContext():ServletContext sc = servletConfig.getServletContext();  //servletConfig可以在servlet的init(ServletConfig config)方法中获取得到  /* 需要传入一个参数ServletContext对象, 获取方法在上面 */// 这种方法 获取失败时抛出异常ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);// 这种方法 获取失败时返回nullApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc);

5.实现ApplicationContextAware接口

@Componentpublic class SpringUtils implements ApplicationContextAware {    private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        this.applicationContext = applicationContext;    }

6.注解方式

ApplicationContext ctx = new AnnotationConfigServletWebServerApplicationContext(DemoApplication.class);

  

转载于:https://www.cnblogs.com/lyc88/articles/11048507.html

你可能感兴趣的文章
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>