Spring Boot框架的Java代码开发电脑监控软件

举报
yd_267761811 发表于 2024/06/21 10:42:00 2024/06/21
【摘要】 随着信息技术的迅猛发展,计算机已经成为人们日常生活和工作中不可或缺的工具。为了保障计算机的安全和有效使用,电脑监控软件变得越来越重要。本文将介绍如何使用Spring Boot框架开发一款电脑监控软件,并提供详细的Java代码示例。环境配置在开始编写代码之前,我们需要进行一些基础的环境配置。首先,确保你的计算机上安装了Java Development Kit (JDK)和Maven工具。接下来...

随着信息技术的迅猛发展,计算机已经成为人们日常生活和工作中不可或缺的工具。为了保障计算机的安全和有效使用,电脑监控软件变得越来越重要。本文将介绍如何使用Spring Boot框架开发一款电脑监控软件,并提供详细的Java代码示例。
环境配置

在开始编写代码之前,我们需要进行一些基础的环境配置。首先,确保你的计算机上安装了Java Development Kit (JDK)和Maven工具。接下来,创建一个新的Spring Boot项目,可以使用Spring Initializr来快速生成项目骨架。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

开发监控模块
获取系统信息

首先,我们编写一个服务类,用于获取计算机的系统信息,如CPU使用率、内存使用情况等。

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;

@Service
public class SystemInfoService {

    public double getCpuLoad() {
        OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
        return osBean.getSystemLoadAverage();
    }

    public long getFreeMemory() {
        Runtime runtime = Runtime.getRuntime();
        return runtime.freeMemory();
    }

    public long getTotalMemory() {
        Runtime runtime = Runtime.getRuntime();
        return runtime.totalMemory();
    }
}

数据存储

为了存储监控到的数据,我们需要创建一个实体类和对应的存储库。

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class SystemInfo {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private double cpuLoad;
    private long freeMemory;
    private long totalMemory;

    // getters and setters
}

import org.springframework.data.jpa.repository.JpaRepository;

public interface SystemInfoRepository extends JpaRepository<SystemInfo, Long> {
}

定时任务

我们需要设置一个定时任务,定时获取系统信息并存储到数据库中。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class SystemInfoScheduler {

    @Autowired
    private SystemInfoService systemInfoService;

    @Autowired
    private SystemInfoRepository systemInfoRepository;

    @Scheduled(fixedRate = 5000)
    public void collectSystemInfo() {
        double cpuLoad = systemInfoService.getCpuLoad();
        long freeMemory = systemInfoService.getFreeMemory();
        long totalMemory = systemInfoService.getTotalMemory();

        SystemInfo systemInfo = new SystemInfo();
        systemInfo.setCpuLoad(cpuLoad);
        systemInfo.setFreeMemory(freeMemory);
        systemInfo.setTotalMemory(totalMemory);

        systemInfoRepository.save(systemInfo);
    }
}

数据展示

为了方便查看监控到的数据,我们可以使用Thymeleaf模板引擎来创建一个简单的Web页面。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@Controller
public class SystemInfoController {

    @Autowired
    private SystemInfoRepository systemInfoRepository;

    @GetMapping("/systeminfo")
    public String getSystemInfo(Model model) {
        List<SystemInfo> systemInfos = systemInfoRepository.findAll();
        model.addAttribute("systemInfos", systemInfos);
        return "systeminfo";
    }
}

在src/main/resources/templates目录下创建systeminfo.html文件:

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <title>System Info</title>
</head>
<body>
    <h1>System Information</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>CPU Load</th>
            <th>Free Memory</th>
            <th>Total Memory</th>
        </tr>
        <tr th:each="systemInfo : ${systemInfos}">
            <td th:text="${systemInfo.id}"></td>
            <td th:text="${systemInfo.cpuLoad}"></td>
            <td th:text="${systemInfo.freeMemory}"></td>
            <td th:text="${systemInfo.totalMemory}"></td>
        </tr>
    </table>
</body>
</html>

监控到的数据,如何自动提交到网站

为了将监控到的数据自动提交到网站,我们可以使用RestTemplate进行HTTP请求。首先,添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后,在定时任务中添加代码,将数据提交到网站:

import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;

@Component
public class SystemInfoScheduler {

    @Autowired
    private SystemInfoService systemInfoService;

    @Autowired
    private SystemInfoRepository systemInfoRepository;

    @Scheduled(fixedRate = 5000)
    public void collectSystemInfo() {
        double cpuLoad = systemInfoService.getCpuLoad();
        long freeMemory = systemInfoService.getFreeMemory();
        long totalMemory = systemInfoService.getTotalMemory();

        SystemInfo systemInfo = new SystemInfo();
        systemInfo.setCpuLoad(cpuLoad);
        systemInfo.setFreeMemory(freeMemory);
        systemInfo.setTotalMemory(totalMemory);

        systemInfoRepository.save(systemInfo);

        // 提交数据到网站
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://www.vipshare.com";

        Map<String, Object> data = new HashMap<>();
        data.put("cpuLoad", cpuLoad);
        data.put("freeMemory", freeMemory);
        data.put("totalMemory", totalMemory);

        restTemplate.postForObject(url, data, String.class);
    }
}

通过以上步骤,我们成功地使用Spring Boot框架开发了一款简单的电脑监控软件。该软件能够定时获取计算机的系统信息,并将数据存储在本地数据库中,同时也能够自动将监控到的数据提交到指定网站。希望本文对你在实际开发过程中有所帮助。

本文参考自:https://www.bilibili.com/read/cv35617880

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。