一、ApplicationContextAware 用处

  Spring 提供了ApplicationContextAware类,通过它可以获取所有bean上下文。

二、怎么用?

  ①、定义一个工具类,去实现 ApplicationContextAware,实现 setApplicationContext方法即可

public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext; // Spring应用上下文环境

    @Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
} /**
* 获取对象
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
} }

  ②、业务代码

public interface UserReadService {

    public UserInfo getUserInfoById(Long id);
} @Component("userReadService")
public class UserReadServiceImpl implements UserReadService { @Override
public UserInfo getUserInfoById(Long id) {
System.out.println("获取用户信息");
return null;
} }

  ③、xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:annotation-config />
<!--自动扫描含有@Service将其注入为bean -->
<context:component-scan base-package="com.mycompany.yuanmeng.springdemo.aop" /> <bean id="springContextUtil" class="com.mycompany.yuanmeng.springdemo.aop.SpringContextUtil" /> </beans>

  ④、test

public static void test() {

        new ClassPathXmlApplicationContext("spring.xml"); // 加载ApplicationContext(模拟启动web服务), 当然如果是用web工程的话,可以直接在web.xml配置,容器会去加载此文件。

        UserReadService userReadService = (UserReadService) SpringContextUtil.getBean("userReadService");

        userReadService.getUserInfoById(null);
}

最新文章

  1. 个人也能申请微信小程序获得APPID和手机测试效果
  2. 如何在插件中添加Actor类
  3. Entity Framework Code First (五)Fluent API - 配置关系
  4. PHP 调用Python脚本
  5. Git 常用命令整理
  6. clumsy 0.1 测试工具(延迟\掉包\节流\重发\乱序\篡改)
  7. 用javascript协助导入图片
  8. ExtJs学习笔记之ComboBox组件
  9. hibernate 查询
  10. javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
  11. STS搭建SpringBoot项目
  12. jQuery滑动开关按钮效果
  13. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
  14. IkAnalyzer2012FF_u1.jar免费下载
  15. TeamWork#1,Week 5,Suggestions for Team Project
  16. P1896 [SCOI2005]互不侵犯
  17. 【原创】user.id字段
  18. angularjs中的$eval方法
  19. java线程-synchronized实现可见性代码
  20. Python小知识点(3)--装饰器

热门文章

  1. Rails中的MIME类型
  2. flask开发遇到Internal Server Error的解决办法
  3. UVa 11054 Wine trading in Gergovia
  4. 20款最优秀的JavaScript编辑器
  5. [.NET MVC进阶系列03] Views 视图基础
  6. C# List 使用方法 支持FrameWork2.0 环境
  7. php网页显示正方形图片缩略图
  8. Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
  9. 【转】第一个Linux内核驱动程序
  10. javascript六难题