扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者