一、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); }
本文介绍了如何使用Spring框架中的ApplicationContextAware来获取应用上下文,并通过一个具体的例子展示了其实现过程,包括工具类定义、业务代码编写及XML配置。
1474

被折叠的 条评论
为什么被折叠?



