跳至主要內容

SpringBootDemo

LiCheng大约 1 分钟

SpringBootDemo

根据条件创建bean的注解👻

@ConditionalOnProperty💒

@ConditionalOnProperty(value = "spring.cloud.discovery.enabled", matchIfMissing = true)
public @interface ConditionalOnDiscoveryEnabled {
    //在指定的类上添加,可以限制类的bean创建。
    //value             配置yml文件中的属性名
    //matchIfMissing    设置值,默认为false及默认不创建bean
}

@ConditionalOnMissingBean🌅

  • 装有该注解的方法或者类上,只有在spring容器中不存在时则创建

@ConditionalOnBean🌟

  • 当指定的类的bean在spring容器中存在时则创建
  • @ConditionalOnBean(SpringClientFactory.class)

@AutoConfigureAfter🐔

  • 在指定的类创建bean之后在启动别的类的自动配置 @AutoConfigureAfter(RibbonAutoConfiguration.class)

@ConditionalOnClass🍊

  • 检查指定的类是否存在,存在则创建该注解下的bean
  • @ConditionalOnClass(Endpoint.class)

@Conditional🍊

  • 检查指定的类是否存在,存在则创建该注解下的bean
  • @Conditional(OnAvailableEndpointCondition.class)

@AutoConfigureBefore😎

  • 在当前bean创建之前创建之前配置其他bean``
  • @AutoConfigureBefore({ SimpleDiscoveryClientAutoConfiguration.class, CommonsClientAutoConfiguration.class })

双MQ控制时间差🍎

  • 内部系统mq

    • 推送给A系统1秒一次
    • A系统推送给第三方系统5秒一次
  • 模拟A系统1秒执行一次,并且每5秒打印一次


package com.demo.Timer;

import java.util.Timer;
import java.util.TimerTask;

/**
 * @author lc
 * @since 2022/6/6
 */
public class Main {
  public static void main(String[] args) {
    Timer timer = new Timer();
    long startTime = System.currentTimeMillis();
    timer.schedule(new TimerTask() {
      @Override
      public void run() {
        long endTime = System.currentTimeMillis();
        long time = (endTime - startTime) / 1000;
        System.out.println(time);
        if (time % 5 == 0) {
          System.out.println("Hello World");
        }
      }
    }, 1000, 1000);
  }
}

文件上传🚩

package com.demo.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @author lc
 * @since 2022/6/29
 */
@RestController
@RequestMapping("/file")
public class FileController {
    @PostMapping("uploadFile")
    public String SystemFile(MultipartFile file) {
        String fileName =  file.getOriginalFilename();
        try {
            if (fileName == null){
                return "文件名为空";
            }
            File f = new File(fileName);
            file.transferTo(f);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("上传失败");
        }
        return "上传成功";
    }
}