CDI进阶第九步 模板注解
来源:互联网 发布:上海关键词优化公司 编辑:程序博客网 时间:2024/06/04 18:46
模板就是利用现有的注解去开发新的注解。
比如一个类上面加了太多注解,很烦,这时候可以合并为一个注解。
比如CDI自带的@Model注解,其实就是合并了@RequestScoped注解和@Named注解
那么我们也可以定义一个注解来合并@SessionScoped和@Named
其实开发步骤很简单
在你的自定义注解上加上@Stereotype注解,然后在这个注解上加上你要合并的注解。
比如我把@SessionScoped和@Named合并一下,自己开发一个注解,如以下代码:
package com.rschy.cdistere; import static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.ElementType.TYPE;import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.lang.annotation.Target; import javax.enterprise.context.SessionScoped;import javax.enterprise.inject.Stereotype;import javax.inject.Named; @Named@SessionScoped@Documented@Stereotype@Target({ TYPE, METHOD, FIELD })@Retention(RUNTIME)public @interface SessionModel {}
然后就用起这个自定义注解啦
package com.rschy.cdistere; import java.io.Serializable; @SessionModelpublic class HelloBean implements Serializable{private static final long serialVersionUID = 1L; public String say(){return "HELLO WORLD!";}}写个简单的servlet调用一下
package com.rschy.cdistere; import java.io.IOException; import javax.inject.Inject;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; @WebServlet("/hello.html")public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Injectprivate HelloBean bean; @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().append(bean.toString());} }
在浏览器试了下,无论怎么刷新都是同样的结果。这说明就是session作用域的对象了。
0 0
- CDI进阶第九步 模板注解
- CDI进阶第四步 自定义注解验证
- CDI进阶第二步 自定义注解拦截器
- CDI进阶第三步 CDI验证器
- CDI进阶第五步 CDI事件
- CDI进阶第六步 CDI装饰模式
- CDI进阶第八步 CDI初始化与销毁事件
- CDI进阶第七步 注入内置对象
- CDI进阶第十步 查找上下文
- CDI技术第六步:自定义选择器注解
- CDI技术第九步 构造注入与setter注入
- CDI技术第八步 动态CDI BEAN
- 第九章 模板高级进阶
- CDI进阶第一步 CDI拦截器
- CDI学习第二步,BEAN作用域
- CDI技术第三步,对话作用域
- CDI技术第七步 生命周期管理
- cdi
- iOS Run Loop
- 使用postman做接口测试
- Laravel添加事务
- xStream xml反序列化时 强转对象相关问题
- ubuntu64使用adt是出错(r文件没有找到)
- CDI进阶第九步 模板注解
- 那些不能遗忘的知识点回顾——C/C++系列(笔试面试高频题)
- iOS唯一标示符引导
- windows7下启动mysql服务名无效
- 从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
- redis索引的设计
- Android 内建Theme的使用
- centos6安装配置freeradius和mysql
- 浅谈Java类加载顺序