• Springboot的自动装配原理和文件上传FastDFS


    Spring Boot的自动装配原理:

    Spring Boot的自动装配原理是基于约定大于配置的原则,它通过扫描类路径下的各种文件以及类的注解信息来自动配置应用程序的各种组件和功能。Spring Boot会根据约定的规则自动配置相应的Bean,这些Bean都是单例的,并以Spring应用上下文的形式存在。

    Spring Boot的自动装配原理主要分为以下几个步骤:

    1.扫描类路径下的各种文件,包括application.properties(或application.yml)、META-INF/spring.factories等文件,加载各种自动配置类。

    2.Spring Boot启动时会扫描应用中所有的配置类,并将其中被@Bean标注的方法返回的实例添加到Spring容器中。

    3.Spring Boot会扫描类路径下的特定包,如@SpringBootApplication注解中指定的包,以及classpath下所有的组件,根据条件匹配装配Bean。

    4.Spring Boot会自动配置一些通用的Bean,如DataSource、JdbcTemplate等,这些Bean可以被应用程序直接使用。

    文件上传FastDFS:

    FastDFS是一个开源的轻量级分布式文件系统,它提供了文件上传、下载、删除、修改等功能。使用FastDFS进行文件上传时,需要先连接Tracker服务器,然后上传文件到Storage服务器,最后获取文件的访问URL。

    在Spring Boot中使用FastDFS进行文件上传,可以使用fastdfs-client-java客户端库来实现。具体步骤如下:

    1.添加fastdfs-client-java依赖:

    1. <dependency>
    2. <groupId>org.csourcegroupId>
    3. <artifactId>fastdfs-client-javaartifactId>
    4. <version>1.27-SNAPSHOTversion>
    5. dependency>

    2.配置FastDFS客户端:

    1. @Bean
    2. public TrackerClient trackerClient() {
    3. return new TrackerClient();
    4. }
    5. @Bean
    6. public TrackerServer trackerServer() throws IOException {
    7. return trackerClient().getConnection();
    8. }
    9. @Bean
    10. public StorageServer storageServer() throws IOException {
    11. return trackerClient().getStoreStorage(trackerServer());
    12. }
    13. @Bean
    14. public StorageClient1 storageClient() throws IOException {
    15. return new StorageClient1(trackerServer(), storageServer());
    16. }

    3.编写文件上传服务:

    1. @Service
    2. public class FileUploadService {
    3. @Autowired
    4. private StorageClient1 storageClient;
    5. public String upload(MultipartFile file) throws Exception {
    6. byte[] bytes = file.getBytes();
    7. String originalFilename = file.getOriginalFilename();
    8. String extName = FilenameUtils.getExtension(originalFilename);
    9. NameValuePair[] metaList = new NameValuePair[1];
    10. metaList[0] = new NameValuePair("fileName", originalFilename);
    11. String fileId = storageClient.upload_file1(bytes, extName, metaList);
    12. return fileId;
    13. }
    14. }

    在上面的代码中,通过注入StorageClient1实例来使用fastdfs-client-java客户端库提供的上传文件的方法。由于上传文件时需要指定文件的原始名称和扩展名,因此使用了FilenameUtils工具类来获取它们。同时,也可以为文件添加一些元数据,例如文件名称等。

    使用示例:

    1. @RestController
    2. @RequestMapping("/file")
    3. public class FileUploadController {
    4. private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);
    5. @Autowired
    6. private FileUploadService fileUploadService;
    7. @PostMapping("/upload")
    8. public String upload(@RequestParam("file") MultipartFile file) {
    9. try {
    10. String fileId = fileUploadService.upload(file);
    11. return fileId;
    12. } catch (Exception e) {
    13. logger.error("上传文件失败", e);
    14. return "上传文件失败: " + e.getMessage();
    15. }
    16. }
    17. }

  • 相关阅读:
    Docker MySQL Shutting down mysqld
    cadence SPB17.4 - allegro - Allegro2Altium.bat 初探
    MySQL--视图、存储过程、触发器
    CoppeliaSim机器人模拟器与Matlab Simulink环境
    1700*C. Mixing Water(数学 | 二分)
    2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗
    项目记录:使用SpringBoot + MyBatisPlus 在MySQL字段设置外键后ID自增失效导致添加失败问题(ID生成策略)
    spring整合JdbcTemplate进行数据库操作
    重构服务的一些想法
    java中判断对象类型的三种方法
  • 原文地址:https://blog.csdn.net/NanCheng_666/article/details/133687339