首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

SpringBoot开发案例之邮件多实例发送

前言 最近在做邮件发送的服务,正常来说 SpringBoot 整合mail还是很方便的,然而来了新的需求:A请求使用邮箱C发送,B请求使用邮箱D发送,也就是说我们需要配置两套发送服务。 单实例 首先我们来看下单个服务的配置: spring.mail.host=smtp.mxhichina.com spring.mail.username=admin@52itstyle.com spring.mail.password=123456 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true 其他的不用管,我们只需要在用到的时候注入以下即可: @Autowired private JavaMailSender mailSender;//执行者 如果大家对如何加载配置以及初始化感兴趣,可以了解下 spring-boot-autoconfigure 的原理。 多实例 由于 mail 并没有像数据库那样提供多数据源,这里只能我们自己手动获取了: /** * 创建发送器 */ public class MailUtil { public static JavaMailSenderImpl createMailSender(){ JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.mxhichina.com"); sender.setPort(25); sender.setUsername("admin@52itstyle.com"); sender.setPassword("123456"); sender.setDefaultEncoding("Utf-8"); Properties p = new Properties(); p.setProperty("mail.smtp.timeout",1000+""); p.setProperty("mail.smtp.auth","true"); sender.setJavaMailProperties(p); return sender; } } 这里,顺便说一个小功能,在发送邮件的时候,如何自定义显示发件人名称: MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("345849402@qq.com","爪哇笔记"); 最后我们在使用的时候,只需要根据不同的请求使用不同的 sender 就可以了。 项目源码 码云:https://gitee.com/52itstyle/spring-boot-mail

优秀的个人博客,低调大师

Android开发教程 - 使用Data Binding(五)数据绑定

本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 使用Data Binding(五)数据绑定 使用Data Binding(六)RecyclerView Adapter中的使用 使用Data Binding(七)使用BindingAdapter简化图片加载 使用Data Binding(八)使用自定义Interface 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法 前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,在两者的布局文件中,都可以绑定数据(对象),本篇文章我们就来介绍数据的绑定。 <data>标签 在这个标签中,我们通常用来做下面的事情: - 定义所绑定的数据的名称(变量名)及对应类型 - 引入页面所需的类 示例如下: <data> <import type="android.view.View" /> <import type="android.text.TextUtils" /> <variable name="visible" type="boolean"/> <variable name="title" type="String"/> <variable name="user" type="cn.examplecode.androiddatabinding.User"/> </data> 其中”<import/>”标签表示引入一个类,比如上例中引入了View类和一个工具类TextUtils,当然也可以引入你自己的类,比如常量类或者工具类。 下面”<variable/>”标签定义了本页面所需要的各种数据名称或类型,其类型可以是java中的基础类型,或者自定义的类。 设置数据 上面定义了页面中所需要的数据后,下面就需要通过获取到的Binding对象设置这些数据: mBinding.setVisible(true); mBinding.setTitle("用户信息"); User user = new User(); user.setName("Steve Jobs"); mBinding.setUser(user); 这里的setXXX()方法也是IDE自动根据<data>标签中的定义自动生成的。 如果写代码过程中发现IDE并没有自动正确生成对应的setXXX()方法,则参考这篇文章:Android Data Binding没有正常生成相关类/方法的解决办法,仅需几步操作即可使IDE正常生成。 在布局中使用这些数据 数据设置完毕以后就可以在页面中使用这些数据了,使用起来也非常方便,比起在java代码中操作,可以省去不少代码。 <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{title}" android:visibility="@{visible ? View.VISIBLE : View.GONE}" /> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.name}" /> 请注意上面的代码: android:text="@{title}" 这一行是设置变量”title”的值到TextView中。 android:visibility="@{visible ? View.VISIBLE : View.GONE}" 这一行是根据变量”visible”的值来控制该TextView的显示与否,注意这里需要在<data>标签中引入android.view.View类,来使用View中的VISIBLE和GONE常量,这里可以使用问号表达式来判断。 android:text="@{user.name}" user是一个自定义对象,user.name意思是取user对象中的name的值。 User定义如下,注意必须设置getter/setter: public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } 总结 通过本篇文章相信你已经了解如何将数据与View进行绑定,这是Data Binding的核心,也是MVVM架构模式的基础,这里介绍的是比较简单的绑定,后面我们将介绍更加深入的使用,使用这些技术后就会发现Data Binding的强大和高效率。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册