与@interface的初恋
来源:互联网 发布:广州软件著作权登记 编辑:程序博客网 时间:2024/05/16 23:45
在java开发中,我们经常用到注解,比如@Override,@SuppressWarnings。@Override表示重写一个方法时,当方法名不对的时候就会提示报错;@SuppressWarnings表示压制你所写的方法内的警告。但是有的时候自己也想做一个自己的注解,提高代码的逼格和效率。
首先,先了解注解本质:注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后,
JAVAC编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无任何标记,看你有什么标记,就去干相应的事。了解之后,我们就可以先搞一个例子,这个例子就是整个项目中都要用到某个方法,我们可以把这个方法提取出来方便使用和维护(用@interface做):
1、定义自己的注解类:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ShoppingCartAnno {
public boolean flag() default true;
}
2、写一个拦截器,里边写上提取出来的代码:
拦截器配置:
<mvc:interceptor>
<mvc:mapping path="/**/*.html*"/>
<bean class="com.ShoppingCartHandlerInterceptor">
</bean>
</mvc:interceptor>
拦截器:
public class ShoppingCartHandlerInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Annotation[] anno = handlerMethod.getMethod().getDeclaredAnnotations();
if (anno != null) {
for (Annotation temp : anno) {
if (temp.annotationType().equals(ShoppingCartAnno.class)) {//这个是重点
//公用代码
}
}
}
}
}
3、使用:
步骤2定义好了拦截器,拦截了所有的注解,当有@ShoppingCartAnno时就执行公用代码块;所以我们在想用到该公用代码块的方法上部写上:@ShoppingCartAnno:
@RequestMapping(value = "/myindex")
@ShoppingCartAnno
public String myindex(ModelMap modelMap,HttpServletRequest request,
HttpServletResponse response) {
}
这样就非常方便和简洁的使用公用代码块了,个人觉得挺不错的。感觉比公用代码块提出来放到一个类里边,每次调用都new 一下该类执行该方
法块要快和更有逼格!
- 与@interface的初恋
- 与C#初恋的告白
- 小丫头与安卓的初恋
- 与初恋结婚的概率是1%
- 初恋与爱人
- 初恋的音乐盒
- 初恋的温度
- 初恋的25瞬间
- 初恋的尘封
- 我的第二次初恋
- 致初恋的一封信
- 初恋的酸甜苦涩
- 永不泯灭的初恋
- 致初恋的一封信
- Block的初恋
- java中interface与@interface的区别
- 初恋
- 初恋
- bzoj1370 团伙
- [BZOJ]1415 [NOI2005] 聪聪与可可 期望 + 记忆化搜索
- Mapinfo中编号某一字段值!
- 网络 批量删除 天气 日程 游戏
- 手机前端input的type问题,输入身份证考虑到“X”
- 与@interface的初恋
- Excel2007中用裁剪工具修剪图片将图片重要部分裁剪出来
- IntentService使用详解和实例介绍
- 算法题练习系列之(三十四): 采花生
- terrier索引结构
- 反射之一(静态反射基本概念和应用)
- laravel框架与thinkPHP框架的区别
- 图像纹理合成及纹理传输算法学习(附源码)
- Oracle 层次查询、递归