在SpringBoot系统中 怎么往全局上下文中加东西
时间: 2024-10-11 13:06:28 浏览: 20
SpringBoot新特性之全局懒加载机制
在Spring Boot应用中,将数据添加到全局(ApplicationContext)上下文通常是通过创建并注入一个`org.springframework.context.ApplicationListener`或者直接使用`@Autowired`注解来实现的。以下是两种常见的方法:
1. **使用ApplicationListener**:
```java
@Component
public class GlobalContextInjector implements ApplicationListener<ContextRefreshedEvent> {
private final Map<String, Object> globalContext = new HashMap<>();
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
// 当应用程序启动或刷新时,可以在这里添加或更新全局数据
globalContext.put("yourKey", "yourValue");
// 可以通过事件的beanFactory获取ApplicationContext
ApplicationContext context = event.getApplicationContext();
// 将数据保存到ApplicationContext中,如 `context.getServletContext().setAttribute(key, value);`
}
}
```
在这个例子中,你需要监听`ContextRefreshedEvent`,以便在Spring容器初始化完成后执行。
2. **使用@Autowired**:
如果你想要在某个bean上自动存储全局数据,你可以创建一个`@ConfigurationProperties`的类,并将其作为全局bean,这样它会自动被Spring管理并放入全局上下文中。
```java
@Configuration
@ConfigurationProperties(prefix = "global-context")
public class GlobalContextBean {
private String key;
private String value;
// getters and setters
}
// 使用的时候
@Autowired
private GlobalContextBean globalContextBean;
```
这样,你可以通过`globalContextBean`访问和设置全局上下文中的数据。
阅读全文