该文章是继Java注解解析-基础+运行时注解(RUNTIME)之后,使用注解处理器处理CLASS注解的文章.通过完整的Demo例子介绍整个注解处理器的搭建流程以及注意事项,你将知道如何去搭建自己的注解处理器.前提是你知道如何去写自定义注解,不清楚的可以点击我上面的链接哦- 介绍 顾名思义注解处理器就是javac包中专门用来处理注解的工具.所有的注解处理器都必须继承抽象类AbstractProcessor然后重写它的几个方法.注解处理器是运行在它自己的JVM中.javac启动一个完整Java虚拟机…
通过类扫描注入到容器中,这种方式,在实际开发中还是很常用的,可以看下自己的配置文件,就会发现,自己公司的项目,搞不好就是这么注入的. 起码,我发现我公司的项目就是这么干的. 下面来演示一下简单的例子: 此例子和上一篇的差别很微弱,相比较而言,就是在xml配置文件里面的配置又变得少了. 关于要注入到容器的bean,不用自己一个个的去写,省去了很多的重复的步骤.简化了操作. 当然我说这么多,你不看看我前面的几篇文章,不亲自实现一下,是不太明朗的.当然你要是了解这个的话,我就显得关公门前耍大刀啦. 附…
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer java基础解析系列(三)---HashMap java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 这是我的博客目录,欢迎阅读 先来一个例子 class…
前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html http://www.cnblogs.com/hunterCecil/p/6924935.html 本文重点介绍一下基于java配置+注解方式搭建系统的过程步骤. 一.摘要 1.所需软件列表: 1) tomcat : apache-tomcat-7.0.54 服务端容器 2) Intellij: Inte…
上篇文章已经介绍了注解的基本构成信息.这篇文章,主要介绍注解的解析.毕竟你只声明了注解,是没有用的.需要进行解析.主要就是利用反射机制在运行时进行查看和利用这些信息 常用方法汇总 在Class.Field.Method.Constructor中都有如下方法: //获取所有的注解 public Annotation[] getAnnotations() //获取所有本元素上直接声明的注解,忽略inherited来的 public Annotation[] getDeclaredAnnotation…
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer缓存及装箱拆箱 java基础解析系列(三)---HashMap原理 java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 这是我的博客目录,欢迎阅读 先来一个…
在学习Java之后会遇到很多的注解,有加载JavaBean的注解:@Component,@Service,@Controller:有获取配置文件中数值的注解@Value:有获取Http请求的数据的注解,@RequestBody.通过这些注解,spring扫描这些组件,提供相关的服务.如何自定义注解,满足自己的特定服务呢? [转]http://blog.csdn.net/mafan121/article/details/50212137 [转]http://www.jianshu.com/p/7c…
Atitit.注解解析(1)---------词法分析 attilax总结  java .net 1. 应用场景:::因为要使用ui化的注解 1 2. 流程如下::: 词法分析(生成token流) >>>>语法分析(生成ast) >>解释执行... 2 3. 词法分析的框架,antlr 2 4. Fsm 状态机/// switch 2 5. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2 5.1. 操作符(运算符 )::: 2 5.2.…
APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具处理注解时可以根据源文件中的注解生成额外的源文件和其他的文件(文件的具体内容由注解处理器的编写者决定),APT还会编译生成的源代码文件和原来的源文件,将它们一起生成class文件. Hibernate自动生成XML模拟: 涉及知识点: 1.自定义注释使用原注释 @Target(ElementType…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43452969 ,本文出自:[张鸿洋的博客] 1.概述 记得很久以前,写过几篇博客,容我列举一下: Android 进阶 教你打造 Android 中的 IOC 框架 [ViewInject] (上) Android 进阶 教你打造 Android 中的 IOC 框架 [ViewInject] (下) Android 框架炼成 教你如何写组件间通信框架EventBus 大家可以关…
@Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用. @Controller通过@Controller注解说明该类非普通类,而是一个控制器类. @Service@Repository用于注解dao层,在daoImpl类上面注解. @RestController1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller,…
Spring-mvc 什么是SpringMvc SpringMvc是一种基于java的实现Mvc设计模式的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow中 SpringMvc已经成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的mvc框架,他通过一套注解,让一个简单的java类成为处理请求的控制器,他无需实现任何接口,同时他还支持RESTful编程风格的请求 Mvc设计模式…
基本步骤 新建Maven项目(Web) 导入依赖 配置web.xml 配置springmvc配置文件 编写Controller 创建view页面 部署并启动Tomcat 开始搭建 新建Maven项目(Web) 使用webapp骨架,创建一个web项目 导入依赖 <properties> <spring.version>5.1.13.RELEASE</spring.version> <junit.version>4.13.1</junit.version…
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义.解析,并对几个 Android 开源库 Annotation 原理进行简析.PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 完整版原文见:Java Android 注解(Ann…
2.注解 说道注解,竟然还有各种分类,得,这记不住,我们从注解的作用来反推其分类,帮助大家记忆,然后举例强化大家的记忆,话说注解的作用: 1.标记一些信息,这么说可能太抽象,那么我说,你见过@Override.@SuppressWarnings等,这类注解就是用于标识,可以用作一些检验 2.运行时动态处理,这个大家见得应该最多,在运行时拿到类的Class对象,然后遍历其方法.变量,判断有无注解声明,然后做一些事情.类似上述三篇博文中的做法. 3.编译时动态处理,这个呢?就是我们今天的主角了,一般…
本文将介绍java 8的第二个特性:类型注解. 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置.那充满争议的类型注解究竟是什么?复杂还是便捷? 什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性:java 8里面,注解可以应用在任何地方,比如: 创建类实例 new @Interned MyObject(); 类型映射 myString = (@NonNull String) str; i…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上阐述@ConfigurationProperties注解的使用 @ConfigurationProperties 此注解多用于对配置文件的加载以及映射对应值至相应的java属性中,样例如下 1.配置属性指定application.properties # user custom user.custom.username=demo_jing user.custom.nickname=nanco user…
承接前文springboot情操陶冶-SpringApplication(二),本文将在前文的基础上分析下@Configuration注解是如何一步一步被解析的 @Configuration 如果要了解与明白@SpringBootApplication的工作机制,必须了解@Configuration的注解应用.因为前者依赖后者,此处看下源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Com…
本文转载自 https://www.cnblogs.com/morethink/p/8028664.html, 作者写得非常好, 致谢! SpringMVC 参数绑定注解解析   本文介绍了用于参数绑定的相关注解. 绑定:将请求中的字段按照名字匹配的原则填入模型对象. SpringMVC就跟Struts2一样,通过拦截器进行参数匹配. 代码在 https://github.com/morethink/MySpringMVC URI模板变量 这里指uri template中variable(路径变…
spring mvc 入口 DispatcherServlet,类关系图如下所示 DispatcherServlet 就是一个 Servlet,那Servlet 的初始化方法 init()在哪里,通过类图可知,可以查看 HttpServletBean 中的 init() 方法,进行 Servlet初始化. xml解析和注解 解析入口 经过一些xml和spring 初始化配置加载后,进入AbstractApplicationContext#refresh()方法 ConfigurableLista…
1.以前搭建Spring MVC 框架一般都使用配置文件的方式进行,相对比较繁琐.spring 提供了使用注解方式搭建Spring MVC 框架的方式,方便简洁.使用Spring IOC 作为根容器管理service.dao.datasource,使用spring MVC 容器作为子容器管理controller.视图解析器 spring 官方文档中有相关示例 public class MyWebAppInitializer extends AbstractAnnotationConfigDisp…
前言 在上一篇文章中分析了Spring是如何解析默认标签的,并封装为BeanDefinition注册到缓存中,这一篇就来看看对于像context这种自定义标签是如何解析的.同时我们常用的注解如:@Service.@Component.@Controller标注的类也是需要在xml中配置<context:component-scan>才能自动注入到IOC容器中,所以本篇也会重点分析注解解析原理. 正文 自定义标签解析原理 在上一篇分析默认标签解析时看到过这个类DefaultBeanDefinit…
背景:我们启动主启动类后,相应的bean就被扫描进来了,原理是啥? 实现该功能的主要核心类就是:ConfigurationClassPostProcessor,我们看看他的继承体系: 它实现了BeanDefinitionRegistryPostProcessor接口,该接口有个方法:void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException; 那么我们的核心逻辑就在该方…
java反射之获取类或接口上的所有方法及其注解(包括实现的接口上的注解) /** * 获取类或接口上的所有方法及方法上的注解(包括方法实现上的注解以及接口上的注解),最完整的工具类,没有现成的工具类 * * @param clz * @param clzFilter * 仅返回具有指定类注解的类或接口中的方法,默认不过滤 * @param methodFilter * 仅返回具有指定方法注解的方法,默认不过滤. 一般使用类或方法即可,没有必要同时两者 * @param includeObject…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上阐述@AutoConfigureAfter和@Conditional注解的作用与解析 1.@Conditional 根据单词来理解,其就是条件的意思.在分析之前我们可以看下其内部源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interf…
承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上对@SpringBootApplication注解作下简单的分析 @SpringBootApplication 该注解是springboot最集中的一个注解,也是应用最广泛的注解.官方也多用此注解以启动spring服务,我们看下其中的源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherit…
一.枚举类 1.概述:即一个类中只能有有限个对象,若只有一个对象,则可以作为单例模式的一种实现. 2.自定义枚举类(JDK1.5以前这么做) //枚举类 class Season{ //1.提供类的属性,声明为private final private final String seasonName; private final String seasonDesc; //2.声明为final的属性,在私有构造器中初始化 private Season(String seasonName,Strin…
Spring 缓存注解解析过程 通过 SpringCacheAnnotationParser 的 parseCacheAnnotations 方法解析指定方法或类上的缓存注解, @Cacheable 注解将被解析为 CacheableOperation 操作, @CachePut 注解将被解析为 CachePutOperation 操作, @CacheEvict 注解将被解析为 CacheEvictOperation 操作. 缓存注解 /** * 启用Spring以注解驱动的缓存管理功能 */…
Swagger2常用注解解析 一.SpringBoot集成Swagger2 二.常用注解解析 具体使用举例说明: 一.SpringBoot集成Swagger2 引入相关jar包 <!-- swagger2 配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.4.0…
Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring+Hibernate的架构搭建一个java web项目 Spring MVC+Spring+Hibernate结构介绍如下: Spring MVC Spring MVC的职责是作为web层框架,实现了我们常见的MVC模式 Spring Spring 作为服务层,利用自身特性IOC.AOP,提供数据从DAO层到Web层的桥梁作用. H…