springboot重学日记(2)

一、批量处理与异步任务
在项目开发中,绝大多数情况下都是通过同步方式处理业务逻辑的,但是比如批量处理数据,批量发送邮
件,批量发送短信等操作 容易造成阻塞的情况,之前大部分都是使用多线程来完成此类任务。
而在Spring 3+之后,就已经内置了 @Async 注解来完美解决这个问题,从而提高效率。
使用的注解:

  • @EnableAysnc 启动类上开启基于注解的异步任务
  • @Aysnc 标识的方法会异步执行
    controller层中:
@RestController
public class AsyncController {

    @Autowired
    AsyncService asyncService;

    public String hello(){
        asyncService.batchAdd();
        return "success";
    }

}

service层中:

@RestController
public class AsyncController {

    @Autowired
    AsyncService asyncService;

    public String hello(){
        asyncService.batchAdd();
        return "success";
    }

}

二、定时任务调度
在项目开发中,经常需要执行一些定时任务,比如 每月1号凌晨需要汇总上个月的数据分析报表; 每天凌晨分
析前一天的日志信息等定时操作。Spring 为我们提供了异步执行定时任务调度的方式。
使用的注解:

  • @EnableScheduling 启动类上开启基于注解的定时任务
  • @Scheduled 标识的方法会进行定时处理
    service层中:
@Service
public class ScheduledService {
    private static int count = 1;

    @Scheduled(cron = "*/3 * * * * MON-FRI")
    public void dataCount(){
        System.out.println("数据统计第"+count++ +"次");
    }
}

括号中用到的是cron表达式
在线生成https://cron.qqe2.com/

启动类:

@EnableScheduling
@EnableAsync
@SpringBootApplication
public class SpringBoot11TaskApplication {

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

}

三、整合邮箱

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

application配置:

spring.mail.username=你的QQ@qq.com
spring.mail.password=生成的授权码
spring.mail.host=smtp.qq.com
spring.mail.properties.smtp.ssl.enable=true

测试:

	@Autowired
    JavaMailSenderImpl javaMailSender;

	@Test
    public void testSimpleMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("放假通知");
        message.setText("暑假放假啦");
        message.setFrom("发送的QQ@qq.com");
        message.setTo("接受的QQ@qq.com");
        javaMailSender.send(message);
    }

复杂邮件(带html和附件):

@Test
    public void testMimeMail() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //通过消息帮助对象,来设置发送的内容,true表示可以发送邮件
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setSubject("收假通知");
        mimeMessageHelper.setText("<h2 style='color:red'>放锤子,好好学习</h2>",true);
        //发送附件
        mimeMessageHelper.addAttachment("wgj.jpg",new File("E:\\wgj.jpg"));
        mimeMessageHelper.setFrom("发送的QQ@qq.com");
        mimeMessageHelper.setTo("接受的QQ@qq.com");
        javaMailSender.send(mimeMessage);
    }

四、缓存
1.pom文件中需要有cache依赖

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

2.建立相应数据库,配置好注解版 mapper 、service 与 Controller
3. @EnableCaching:在启动类上,开启基于注解的缓存
4. 在service层的方法上加上@Cacheable(cacheNames = “user”),重复操作该方法运行过的将放到缓存

后续再更。。。

上传阿里云服务器:
进入opt目录:cd /opt
查看进程:ps -ef|grep java
杀死进程:kill -9 xxxxxx
上架nohup java -jar xxx.jar --server.port=80 &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值