SpringBoot-03-三种开发方式

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。SpringBoot-03-三种开发方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

0.前言

常用的三种开发方式

第一种:

  • 页面在项目中, 使用异步操作, 页面跳转在前端

第二种:

  • 页面不在项目中, 使用异步操作, 页面跳转在前端

第三种:

  • 页面在项目中, 使用同步操作, 页面跳转在后台

1.页面在项目中, 使用异步操作, 页面跳转在前端

1.1.页面跳转到指定页面方案(默认是index.html)

1.1.1.配置文件

SpringBoot-03-三种开发方式

1.1.2.写Controller重定向

SpringBoot-03-三种开发方式

1.1.3.修改配置文件

1.2.如何发送邮件

* SSM, 邮箱如何发送
* 1.注册邮箱
* 2.登录设置smtp pop3服务器
* 3.获取授权码
* 4.添加Spring-context-support+javax-email
* 5.向容器中注入一个JavaMailSender内容
*
* SpringBoot, 邮箱如何发送
* 1.添加邮箱起步依赖
* 2.在配置文件中配置用户名,授权码,smtp服务器地址

 SpringBoot-03-三种开发方式

SpringBoot-03-三种开发方式

@RestController
public class PageJumpController {
    @Autowired
    private JavaMailSender javaMailSender;

    @GetMapping("getEmailCode")
    public String getEmailCode(String email) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<xxxxxxxx@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random()*(9999-1000+1)+1000);
        simpleMailMessage.setText("你的验证码为: "+code);
        javaMailSender.send(simpleMailMessage);
        return "ok";
    }
}

1.3.如何配置Redis

* SSM,配置
* 1.导包
*      1.SpringDataRedis
*      2.Jedis
*      3.导入slf4j
* 2.配置
*      1.配置Redis连接工厂
*      2.配置RedisTemplate或者String RedisTemplate
* SpringBoot,配置
*      1.查询起步依赖
*      2.@Autowired
*        private StringRedisTemplate stringRedisTemplate;
*      3.stringRedisTemplate.opsForValue().set(email,code+"",120, TimeUnit.MINUTES);

SpringBoot-03-三种开发方式

SpringBoot-03-三种开发方式

package com.sm.cn.webController;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
public class PageJumpController {
    /*发送邮件*/
    @Autowired
    private JavaMailSender javaMailSender;
    /*配置Redis*/
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @GetMapping("getEmailCode")
    public int getEmailCode(String email) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<XXXXXX@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random() * (9999 - 1000 + 1) + 1000);
        simpleMailMessage.setText("你的验证码为: " + code);
        /*存入Redis,参数1.Key;2.value;3.多少时间有效;4.时间单位*/
        /*kye前面加"code:"+,可获得层级效果*/
        stringRedisTemplate.opsForValue().set("code:"+email,code+"",120, TimeUnit.MINUTES);
        javaMailSender.send(simpleMailMessage);
        return code;
    }


}

Redis中的层级效果 

SpringBoot-03-三种开发方式

1.3.如何配置异步任务 解决耗时操作

异步任务:
*  SSM,可以使用Spring的异步任务:
*      1.开启 @EnableAsync
*      2.直接使用 @Async
*      注意:在SSM中,默认没有连接池,如果想要有连接池,需要向容器中添加Spring的连接池
*
* SpringBoot:
*      1.默认有8个连接池

修改线程池大小 ,配置文件方式

SpringBoot-03-三种开发方式

修改线程池大小 ,主配置文件@Bean方式

SpringBoot-03-三种开发方式

@Component
public class EmailService {
    /*发送邮件*/
    @Autowired
    private JavaMailSender javaMailSender;
    /*配置Redis*/
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Async
    public void SendMail(String email){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<h15@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random() * (9999 - 1000 + 1) + 1000);
        simpleMailMessage.setText("你的验证码为: " + code);
        /*存入Redis,参数1.Key;2.value;3.多少时间有效;4.时间单位*/
        /*kye前面加"code:"+,可获得层级效果*/
        stringRedisTemplate.opsForValue().set("code:"+email,code+"",120, TimeUnit.MINUTES);
        javaMailSender.send(simpleMailMessage);
    }
}

SpringBoot-03-三种开发方式

异步任务不能再主类中使用, 不能有返回值, 所以进行抽取

2.页面不在项目中, 使用异步操作, 页面跳转在前端

2.1.前后端分离解决跨域问题

2.1.1.CrossConfig.java

/**
 * 解决跨域问题
 */
@Configuration
public class CrossConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

2.1.2.MySpringBootController.java

//@CrossOrigin注解,解决跨域问题
@CrossOrigin(origins = {"http://localhost:8080", "null"})
@SpringBootApplication
@MapperScan(basePackages = "com.sm.cn.mapper")
@EnableTransactionManagement//开启事务
@EnableAsync
public class MySpringBootController {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootController.class);
    }
}

 3.页面在项目中, 使用同步操作, 页面跳转在后台

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192911.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!