springboot项目启动时将数据库数据缓存至map
时间: 2023-12-16 14:06:03 浏览: 122
Springboot项目启动时加载数据库数据到内存.rar
在Spring Boot项目启动时将数据库中的数据缓存至Map,可以使用Spring Boot提供的ApplicationRunner或CommandLineRunner接口,在项目启动完成后执行指定的逻辑。
具体实现步骤如下:
1. 创建一个缓存类,用于缓存数据库中的数据:
```java
@Component
public class DataCache {
private Map<Long, Object> cache = new HashMap<>();
public void put(Long id, Object data) {
cache.put(id, data);
}
public Object get(Long id) {
return cache.get(id);
}
public Map<Long, Object> getAll() {
return Collections.unmodifiableMap(cache);
}
}
```
2. 创建一个数据加载类,实现ApplicationRunner或CommandLineRunner接口,并在其实现的run方法中将数据库中的数据缓存至Map中:
```java
@Component
public class DataLoadRunner implements ApplicationRunner {
@Autowired
private DataCache dataCache;
@Autowired
private DataSource dataSource;
@Override
public void run(ApplicationArguments args) throws Exception {
try (Connection conn = dataSource.getConnection()) {
String sql = "SELECT id, data FROM table";
try (PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
Long id = rs.getLong("id");
Object data = rs.getObject("data");
dataCache.put(id, data);
}
}
}
}
}
```
在这个例子中,我们使用了Spring Boot提供的DataSource来获取数据库连接,然后使用JDBC API将数据从数据库中查询出来,并存储至DataCache中。
3. 在Spring Boot启动类中添加注解@EnableScheduling,开启定时任务功能,以便在数据发生变化时,能够及时更新缓存。
```java
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
这样,在Spring Boot项目启动完成后,数据就会被缓存至Map中,并可以通过DataCache在整个应用程序中访问。如果数据发生变化,可以通过定时任务重新加载数据到缓存中。
阅读全文