springboot学习

Springboot学习

1、异步任务

Springboot提供了异步方法的注解

就是一个很好的注解,如果有方法因为被延迟,而阻塞,我们可以用注解标明该方法为异步方法,就会跳过该方法,先执行后面的方法,执行完我们再回头执行这个异步方法

个人感觉:执行到有延迟的方法,cpu分出一个进程来执行后面的方法,多线程执行就不卡在延迟方法这里了

使用:方法上加@Async,主配置文件上加@EnableAsync

public class AsyncService {
    @Async
     public void Hello(){
       ...
    }
}
//主配置方法
@SpringBootApplication
@EnableAsync
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}
//service
@Service
public class AsyncService {
    @Async
    public void Hello(){
        try{
            Thread.sleep(3000);
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("数据处理中...");
    }
}

//controller
@RestController
public class AsyncController {
    @Autowired
    AsyncService asyncService;

    @GetMapping("/hello")
    public String Hello(){
        asyncService.Hello(); //延迟三秒
        return "ok";
    }
}
//主配置方法
@SpringBootApplication
@EnableAsync
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}

2、邮件任务

qq邮箱设置:

1)登录qq邮箱,点击设置,再进入‘ 账户 ’

2)鼠标滚轮划到下面,开启POP3/SMTP服务,按照要求给指定收件人发送短信。开启后会发送给你一个加密的密码,记录下密码,后面需要。

1、添加依赖

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

2、解释说明

导入了spring提供的mail启动器以后,就导入了mail的一些包。简单看一看就行了。spring会提供一个JavaMailSenderImpl类给我们使用,就像Redis的RedisTemplate一样

3、application.properties环境配置

spring.mail.username=qq邮箱号
#这里就需要设置前面获得的加密密码
spring.mail.password=fxrvwidvxcwfddca 
spring.mail.host=smtp.qq.com
#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true

4、测试使用

@SpringBootTest
class TestApplicationTests {
    @Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads() {
    }
    @Test
    public void test1(){
        //发送一个简单的消息
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject("12月15日我在学springboot实现qq邮件任务");
        simpleMailMessage.setText("感谢这些个日子奋斗的自己,唾弃那个躺尸迷失的自己");
        simpleMailMessage.setFrom("qq邮箱号");
        simpleMailMessage.setTo("qq邮箱号");
        mailSender.send(simpleMailMessage);
    }
    
    @Test
    public void test2() throws MessagingException {
        //发送一个复杂的消息
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //我们通过一个messageHelper 帮助我们组装这些信息
        MimeMessageHelper messageHelper=new MimeMessageHelper(mimeMessage,true);
        messageHelper.setSubject("复杂的邮件任务");
        messageHelper.setText("<p style='color:blue'>感谢这些个日子奋斗的自己,唾弃那个躺尸迷失的自己</p>",true);
        messageHelper.setFrom("qq邮箱号");
        messageHelper.setTo("qq邮箱号");

        //附件
        messageHelper.addAttachment("1.jpg",new File("D:\\unimportant\\greenmark.jpg"));
        messageHelper.addAttachment("2.jpg",new File("D:\\unimportant\\greenmark.jpg"));
        
        mailSender.send(mimeMessage);
    }

}

5、提升:把代码封装成工具类方法

/**
     * 
     * @param subject
     * @param text
     * @param from
     * @param to
     * @param multipart
     * @param html
     * @throws MessagingException
     * @Author 让时间变成力量
     */
    public void sendMessage(String subject,String text,String from,String to,boolean multipart,boolean html) throws MessagingException {
        //发送一个复杂的消息
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //我们通过一个messageHelper 帮助我们组装这些信息
        MimeMessageHelper messageHelper=new MimeMessageHelper(mimeMessage,multipart);
        messageHelper.setSubject(subject);
        messageHelper.setText(text,html);
        messageHelper.setFrom(from);
        messageHelper.setTo(to);

        //附件
        messageHelper.addAttachment("1.jpg",new File("D:\\unimportant\\greenmark.jpg"));
        messageHelper.addAttachment("2.jpg",new File("D:\\unimportant\\greenmark.jpg"));

        mailSender.send(mimeMessage);
    }

3、定时任务

springboot提供的接口,可以定时定点的执行具体哪个方法

使用:

//启动类上加注解 @EnableScheduling
@SpringBootApplication
@EnableScheduling
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}

//方法上加注解
@Service
public class ScheduleService {
    
    @Scheduled(cron = "0/5 * * * * *") //每隔5秒执行一次,从0秒开始
    private void Now(){
        System.out.println("现在是:"+new Date());
    }
}

启动springboot项目后,被加上@Scheduled(cron = "")注解的方法根据cron表达式自动执行

cron表达式:秒 分 时 天 月 周几,不懂就百度

目前已知:

  • *代表所有,
  • ?代表不确定(但和 * 差不多),
  • /可以设置间隔 ,0/5 * * * * * 每隔5秒
  • -设置 区间 0-5 * * * * * ,0到5秒 [0,5]

4、开启Restful风格

怎么开启restful风格
rest和restful的区别

posted @ 2022-03-11 12:52  让时间变成力量  阅读(53)  评论(0)    收藏  举报