您的位置:首页 > 移动开发

Spring ApplicationContextAware获取上下文

2016-05-29 15:41 489 查看
一、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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: