<br>认识
Spring
<br> 来认识
Spring
的一些特性,并初步了解一下什么叫作 IoC?什么叫作 DI? <br>简介
Spring
<br>Inversion of Control <br>Dependency Injection <br><br><br>核心容器 <br>
Spring
核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解
Spring
的重点所在。 <br>管理 Bean <br>从第一个
Spring
应用程式开始,逐步了解何谓依赖注入,以及如何使用
Spring
的容器功能来管理 Bean,了解 Bean 在
Spring
容器中的生命周期。<br>第一个
Spring
程式 <br>BeanFactory、 ApplicationContext <br>Type 2 IoC、Type 3 IoC <br>属性参考 <br>自动绑定 <br>集合物件注入 <br>Bean 的生命周期 <br>Bean 进阶管理 <br>理想上对于 Bean 来说,它不需要意识到
Spring
容器的存在,然而有时候 Bean 仍必须知道有关于
Spring
容器或自己的一些讯息,而另一方面,您可能必须让容器对 Bean 进行一些额外处理。<br>不使用XML定义档进行 Bean设置 <br>Aware 相关介面 <br>BeanPostProcessor <br>BeanFactoryPostProcessor <br>PropertyPlaceholderConfigurer <br>PropertyOverrideConfigurer <br>CustomEditorConfigurer <br>讯息与事件 <br>ApplicationContext 除了具备如 BeanFactory 基本的容器管理功能之外,并支援更多应用程式框架的特性,像是资源的取得、讯息解析、事件的处理与传播。<br>Resource 的取得 <br>解析文字讯息 <br>倾听事件 <br>事件传播 <br><br><br>AOP(Aspect-Oriented Programming) <br> 在一个服务的流程中插入与服务无关的逻辑(例如Logging、Security),这样的逻辑称为 Cross-cutting concerns,将 Crossing-cutting concerns 独立出来为一个物件,这样的特殊物件称之为 Aspect,Aspect-oriented programming 着重在 Aspect 的设计及与应用程式的缝合(Weave)。<br><br>AOP 入门 <br>AOP 的观念与术语都不是很直觉,可以先从
代理
机制(
Spring
实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。<br>从
代理
机制初探 AOP <br>动态
代理
<br><br>AOP 观念与术语 <br>
Spring
AOP <br>Advices <br>Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,
Spring
提供了几种不同的 Advices。<br>Before Advice <br>After Advice <br>Around Advice <br>Throw Advice <br>Pointcut、Advisor <br>Pointcut 定义了 Advice 的应用时机,在
Spring
中,使用 PointcutAdvisor 将 Pointcut 与 Advice 结合成为一个物件,
Spring
中大部分内建的 Pointcut 都有对应的 PointcutAdvisor。<br>NameMatchMethodPointcutAdvisor <br>RegExpMethodPointcutAdvisor <br>ControlFlowPointcut <br>Pointcut 介面 <br>Pointcut 交集、联集操作 <br>Introduction <br>为特殊的 Advice,它影响的不是方法的流程,而是影响整个物件的行为,为物件动态 mixin 职责。<br>IntroductionInterceptor <br>DelegatingIntroductionInterceptor <br>Autoproxing <br>自动
代理
可以让您不用为每一个要被 Advised 的 Target 手动定义
代理
物件,透过 Bean 名称或是 Pointcut 的比对,自动为符合的 Target 建立
代理
物件。<br>BeanNameAutoProxyCreator <br>DefaultAdvisorAutoProxyCreator <br><br><br>持久层 <br> 来看看
Spring
的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 <br>资料库存取 <br>
Spring
提供了 DAO 框架,让应用程式开发时无须耦合于特定资料库技术。<br>
Spring
的 DAO 支持 <br>DataSource 注入 <br>DataSource 置换 <br>JDBC 支援 <br>
Spring
在 JDBC 的使用上提供了几个类别,让您可以简化 JDBC 在使用时的流程。<br>使用 JdbcTemplate <br>JdbcTemplate 执行与更新<br><br>JdbcTemplate - 查询 <br>以物件方式进行操作 <br>DataFieldMaxValueIncrementer <br>交易管理 <br>
Spring
提供编程式的交易管理(Programmatic transaction management)与宣告式的交易管理(Declarative transaction management),为不同的交易实作提供了一致的编程模型。<br>
Spring
对交易的支援 <br>JDBC 编程式交易管理 <br>JDBC 宣告式交易管理 <br>交易的属性介绍 <br>TransactionAttributeSource、 TransactionAttribute <br>Hibernate 支援 <br>
Spring
整合了对 Hibernate 的设定,并提供有 HibernateTemplate 等类别,让您在结合 Hibernate 时可以简化使用上的流程。<br>第一个 Hibernate 程式 <br>SessionFactory 注入 <br>HibernateTemplate <br>Hibernate 编程交易管理 <br>Hibernate 宣告式交易管理 <br><br><br>Web 层 <br>
Spring
提供了 MVC Web 框架,您可以善用 IoC 容器在依赖注入上的好处,另一方面,
Spring
也致力于与其它的 Web 框架的整合。 <br>
Spring
MVC 入门 <br>从一个最简单的
Spring
Web 应用程式,来看看
Spring
MVC 框架的架构与 API 组成元素。<br>第一个
Spring
MVC 程式 <br>WebApplicationContext <br>Handler Mapping <br>Handler Interceptor <br>Controller 继承架构 <br>ModelAndView <br>View Resolver <br>Exception Resolver <br>使用 Controller 相关类别 <br>与其它 Web 框架的 Action 物件不同的是,
Spring
提供了丰富的 Controller 相关类别,让您可以依需求来制作自己所需的 Controller 物件。<br>AbstractController <br>MultiActionController 与 ParameterMethodNameResolver <br>MultiActionController 与 PropertiesMethodNameResolver <br>ParameterizableViewController <br>AbstractCommandController <br>AbstractFormController <br>SimpleFormController <br>AbstractWizardFormController <br>ThrowawayController <br>搭配 Controller 的类别 <br>介绍如何在 Controller上搭配使用验证器(Validator)、如何实作Command资料的型态转换,以及如何使用
Spring
的相关API来实作档案上传的功能。<br>实作 Validator <br>使用 PropertyEditor <br>档案上传<br><br><br><br>View层方案、Web框架整合 <br> 当使用JSP作为View层技术时,您可以结合JSTL以及
Spring
提供的标签,而除了JSP技术作为View层之外,
Spring
还提供了不同 View层技术的解决方案,您甚至可以定义自己的View层技术实现。 <br>JSP View 层 <br>当使用 JSP 作为 View 层技术时,您可以结合 JSTL 以及
Spring
提供的标签。<br>结合 JSTL <br><
spring
:bind> 标签 <br>数据绑定的几个方法 <br><
spring
:message> 标签 <br><
spring
:transform> 标签 <br>其它 View 层 <br>除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立自己的 View Class。<br>以 Tiles 为例 <br>自订 View Class <br>与其它 Web 框架的整合 <br>您可以将
Spring
与现在的一些 Web 框架结合在一起,重点都在于如何让 Web 框架意识到
Spring
的存在。<br>第一个 Struts 程式 <br>在 Struts 中整合
Spring
<br>第一个 JSF 程式 <br>在 JSF 中整合
Spring
<br><br><br>其它 <br>
Spring
提供了简化且一致的方式,让您在使用一些 API 或服务时更加简单。 <br>远程(Remoting) <br>
Spring
提供了一致的使用方式,即使所采用的远程服务技术不尽相同,在
Spring
中运用它们的方式却是一致的。<br>RMI <br>Hessian、 Burlap <br>Http Invoker <br>邮件 <br>对于邮件发送服务的支援是由
Spring
的 org.
spring
framework.
mail
.
Mail
Sender介面所定义,它有两个实作类别, org.
spring
framework.
mail
.cos.Cos
Mail
SenderImpl与 org.
spring
framework.
mail
.
java
mail
.
Java
Mail
SenderImpl。<br>简单邮件 <br>HTML 邮件 <br>内嵌图片或附档 <br>排程 <br>
Spring
则对
java
.util.Timer提供了抽象封装,让您可以善用
Spring
的容器管理功能,而
Spring
对Quartz进行了封装,让它在使用上更加方便。<br>使用 TimerTask <br>使用 MethodInvokingTimerTaskFactoryBean <br>使用 Quartz <br>使用 MethodInvokingJobDetailFactoryBean <br>
private SendSimple
Mail
Utils sendSimple
Mail
Utils;
@Test
public void CeE
mail
() throws GeneralSecurityException, MessagingException {
sendSimple
Mail
Utils.sendE...
spring
框架中org.
spring
framework.
mail
.
java
mail
这包实际上是对
java
.
mail
做而二次封装。
发送邮件
依然通过
java
mail
实现。
而在官方文档中说明,
java
mail
是不可以通过http
代理
发送邮件
的。只能通过socks V4或者V5连接网络
发送邮件
。
目前的环境是,内网机器能过某个http
代理
连接网络上网。但是却没有...
公司使用
spring
cloud 微服务 docker + Rancher + drone + maven 自动化部署。
网络环境 内网环境内部微服务必须通过
代理
服务器对外访问。邮件发送 必须通过
代理
服务器进行发送。
spring
boot 封装了
Java
Mail
的类库 。
Spring
Framework提供了一个使用
Java
Mail
Sender接口发送电子邮件的简单抽象 ...
Spring
框架提供了
Java
Mail
Sender接口及其实现类
Java
Mail
SenderImpl,基于这个类可以更加方便实现
发送邮件
功能。
在web工程中,可以把
Java
Mail
Sender交由
Spring
IOC管理。如下面的配置:
<bean id="
java
Mail
Sender" class="org.
spring
framework.
mail
.
java
mail
.Jav...
我们是没办法使用
java
mail
通过一般的
代理
服务器
发送邮件
的,比如下面的代码是没有效果的: Properties props = System.getProperties();
props.setProperty("proxySet","true");
props.setProperty("ProxyHost","192.168.155.1");
引入Maven依赖包<dependency>
<groupId>org.
spring
framework.boot</groupId>
<artifactId>
spring
-boot-starter-
mail
</artifactId>
</dependency>163邮箱application.properties#####163邮箱########
spring
.
mail
.host=
#
spring
boot application.properties配置的各个属性详解
# 该示例文件作为标准提供。(官方文档 翻译过来的)
# 还是花了些功夫翻译,各位如果转发,请留下本文地址,谢谢
# 翻译过程中难免出现翻译错误的地方,如果有哪位大神发现有错误的地方,请您留言指正,感激不尽,共同进步。
# created by lpf in 2017/10/19
# = = =
1.4.4
2、在项目加载的basic.xml中,配置两个bean:
Java
Mail
SenderImpl和Simple
Mail
Message,在后续
发送邮件
中通过这两个类进行发送。
${notify_service.smtp_
mail
.host}