扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月30日
关键字:
在本页阅读全文(共4页)
清单1 src\org\vivianj\beehive\controls\examples\javamail\
JavaMailControl.java
1. package org.vivianj.beehive.controls.examples.javamail;
2.
3. import java.lang.annotation.ElementType;
4. import java.lang.annotation.Inherited;
5. import java.lang.annotation.Retention;
6. import java.lang.annotation.RetentionPolicy;
7. import java.lang.annotation.Target;
8.
9. import org.apache.beehive.controls.api.bean.AnnotationConstraints;
10. import org.apache.beehive.controls.api.bean.AnnotationMemberTypes;
11. import org.apache.beehive.controls.api.bean.ControlInterface;
12. import org.apache.beehive.controls.api.properties.PropertySet;
13.
14. /**
15. * JavaMailControl 是JavaMail控件的公共接口类
16. */
17. @ControlInterface
18. public interface JavaMailControl {
19.
20. /**
21. * 获取邮件发送过程中产生的最后一个违例
22. * @return 返回邮件发送过程中产生的最后一个违例
23. */
24. public Throwable getMailException();
25.
26. /**
27. * 类级别的注释,用于注释JavaMail控件中目标SMTP服务器的
28. 相关信息
29. */
30. @PropertySet(prefix = “SMTPServer”)
31. /* 使用@ Inherited注释表示该注释可以被自动继承 */
32. @Inherited
33. /* 使用AllowExternalOverride表示定义的接口可以被覆盖 */
34. @AnnotationConstraints.AllowExternalOverride
35. @Retention(RetentionPolicy.RUNTIME)
36. /* 使用TYPE和FIRELD表示该注释能够作用于类、接口
37. 以及类成员变量 */
38. @Target( { ElementType.TYPE, ElementType.FIELD })
39. public @interface SMTPServer {
40.
41.
42. /**
43. * SMTP邮件发送服务器的地址,这个属性是必须设置的
44. */
45. String serverAddress();
46.
47. /**
48. * 使用该SMTP服务器发送邮件是否需要安全认证
49. * true - 需要安全认证
50. * false - 不需要安全认证
51. */
52. @AnnotationMemberTypes.Optional
53. boolean authorizationRequired() default false;
54.
55. /**
56. * 访问SMTP邮件服务器时使用的用户名
57. */
58. @AnnotationMemberTypes.Optional
59. String principal() default "";
60.
61. /**
62. * 访问SMTP邮件服务器时使用的密码
63. */
64. @AnnotationMemberTypes.Optional
65. String credentials() default "";
66. }
67.
68. /**
69. *
70. * Message 用于注释继承类中的业务方法,描述被发送邮件的信息
71. */
72. @PropertySet(prefix = "Message")
73. @Inherited
74. @AnnotationConstraints.AllowExternalOverride
75. @Retention(RetentionPolicy.RUNTIME)
76. @Target( { ElementType.METHOD })
77. public @interface Message {
78.
79. /**
80. * 邮件的发送者
81. */
82. String from();
83.
84. /**
85. * 邮件的接收者,可以使用xxx@xx.com,xxx1@xx.com,...的
86. 形式传递多个接收者
87. */
88. String to();
89.
90. /**
91. * 邮件抄送的接收者,可以使用 xxx@xx.com,
92. xxx1@xx.com,...的形式传递多个抄送的接收者
93. */
94. @AnnotationMemberTypes.Optional
95. String cc() default "";
96.
97. /**
98. * 邮件暗送的接收者,可以使用xxx@xx.com,
99. xxx1@xx.com,...的形式传递多个暗送的接收者
100. */
101. @AnnotationMemberTypes.Optional
102. String bcc() default "";
103.
104. /**
105. * 邮件的主题
106. */
107. @AnnotationMemberTypes.Optional
108. String subject() default "";
109.
110. /**
111. * 被发送邮件的类型,默认使用text/plain
112. */
113. @AnnotationMemberTypes.Optional
114. String contentType()
115. default "text/plain;charset=UTF-8";
116.
117.
118. /**
119. * 邮件附件
120. */
121. @AnnotationMemberTypes.Optional
122. String attachment() default "";
123. }
124. }
从清单1中提供的源代码中我们注意到,SMTPServer接口的authorizationRequired、principal、credentials属性之前使用了@AnnotationMemberTypes.Optional注释。应用了@AnnotationMemberTypes.Optional注释属性表示用户使用过程中可以不为这些属性提供内容。没有提供@AnnotationMemberTypes.Optional注释的属性(比如serverAddress)被视为必须设置的属性,控件使用者使用该注释时必须提供对应的声明,否则将无法通过编译。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。