记录一下用SpringBoot写后台遇到的坑 2021-05-18

记录一下用SpringBoot写后台遇到的坑

一.使用SpringBoot自带的邮件包发送请求邮箱时,在本地可以发送,但部署到阿里云之后邮箱发送错误。

最后翻了好多地方也问了一下阿里云的客服,回答说为了防止邮件泛滥,关闭了25端口,所以邮件发送失败了。

解决办法是让用SSL加密的465端口。具体代码如下:(使用yaml)

spring:
  mail:
    host: smtp.qq.com
    password: 密钥
    username: 账号
    default-encoding: UTF-8
    protocol: smtp
    port: 465
    properties:
      mail:
        smtp:
          auth: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            port: 465
          ssl:
            enable: true
          starttls:
            enable: true
            required: true

这个问题没解决之前想着国外的VPS应该不会这么干,所以使用了俄罗斯的VPS,搭建好了只有发现压根没办法访问(能ping通,同时供应商支持国内访问),

后来经过不断测试发现,*就能访问,国内无法使用80端口访问,(这不是之前用的时候1024,1028都能正常访问啊),所以改了一下服务的端口号,避开80端口,

一下子就通了。

最后附上配置德鲁伊的关键代码(感谢b站:狂神说java,让我一天半学明白了Springboot)

1.yaml的配置:

//在数据库连接字符串后面加上
    type: com.alibaba.druid.pool.DruidDataSource

2.

DruidConfig
/**
 * Created with IntelliJ IDEA.
 * User: shangying.
 * Date: 2021/5/15.
 * Time: 18:35.
 * Explain:
 */
@Configuration
public class DruidConfig {

    /*
       将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建
       绑定全局配置文件中的 druid 数据源属性到 com.alibaba.druid.pool.DruidDataSource从而让它们生效
       @ConfigurationProperties(prefix = "spring.datasource"):作用就是将 全局配置文件中
       前缀为 spring.datasource的属性值注入到 com.alibaba.druid.pool.DruidDataSource 的同名参数中
     */
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
    //配置 Druid 监控管理后台的Servlet;
//内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式
    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        // 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet
        // 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
        Map<String, String> initParams = new HashMap<>();
        initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
        initParams.put("loginPassword", "123456"); //后台管理界面的登录密码

        //后台允许谁可以访问
        //initParams.put("allow", "localhost"):表示只有本机可以访问
        //initParams.put("allow", ""):为空或者为null时,表示允许所有访问
        initParams.put("allow", "");
        //deny:Druid 后台拒绝谁访问
        //initParams.put("kuangshen", "192.168.1.20");表示禁止此ip访问

        //设置初始化参数
        bean.setInitParameters(initParams);
        return bean;
    }


}

 

上一篇:数据链接池Druid和Clickhouse:expect ANY, actual ANY pos 2


下一篇:【离线数据仓库及CDH】思维导图知识点总结