public class AnnotationAutoloadBeanDefinitionParser implements
BeanDefinitionParser
ClassAnnotationProcessor processor = new ClassAnnotationProcessor(
filter);
for (SpringAnnotationHandler handler : handlers)
{
handler.setBeanDefinitionRegistry(parserContext.getRegistry());
processor.registHandler(handler);
}
扫描元数据声明
ClassAnnotationProcessor
public void process(Class target)
{
if (target == null)
{
throw new IllegalArgumentException("Target class can't be null");
}
Annotation[] annotations = target.getAnnotations();
for (Annotation a : annotations)
{
IAnnotationHandler handler = this.handlers.get(a.annotationType());
if (handler != null)
{
handler.handle(a, target);
} else
{
if (LOG.isDebugEnabled())
{
}
}
handler = null;
}
}
ServiceAnnotationHandler
注册到spring容器
public void handle(Service s, Class target)
{
String name = target.getSimpleName();
if (!name.endsWith("ServiceImpl"))
{
throw new IllegalConfigException(
target.getName()
+ " is not a service bean.service bean 's class name must be end with 'ServiceImpl'");
}
name = name.substring(0, name.length() - "Impl".length());
name = name.substring(0, 1).toLowerCase()
+ name.substring(1, name.length());
RootBeanDefinition definition = new RootBeanDefinition();
definition.setAbstract(false);
definition.setBeanClass(target);
definition.setSingleton(true);
definition.setLazyInit(s.lazy());
definition.setAutowireCandidate(true);
definition.setAutowireMode(s.autoWire().value());
if (!"".equals(s.init()))
{
definition.setInitMethodName(s.init().trim());
}
if (!"".equals(s.destroy()))
{
definition.setDestroyMethodName(s.destroy().trim());
}
if (LOG.isDebugEnabled())
{
LOG.debug("Reader Bean Definition[" + definition + "] with name["
+ name + "]");
}
SpringAnnotationUtils.readProperties(target,definition);
registerBeanDefinition(name, definition);
}
分享到:
相关推荐
Spring框架作为Java领域中最受欢迎的应用框架之一,其强大的依赖注入和面向切面编程功能可以很好地与DWR结合,实现更加灵活高效的服务端逻辑处理。本篇将详细介绍如何使用Spring框架的注解特性来整合DWR。 #### 二...
本篇笔记主要关注Spring中的注解(Annotation)和@Component,这两大概念是Spring框架的重要组成部分,也是理解SpringIoC(控制反转)和AOP(面向切面编程)的基础。 首先,注解(Annotation)是Java提供的一种元...
Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...
Spring框架_day02笔记 Spring框架是Java平台上一个开源的应用程序框架,用于开发企业级应用程序。该框架提供了一个以Bean为中心的配置文件,并提供了依赖注入(Dependency Injection,DI)机制来管理应用程序中的...
在本文中,我们将深入探讨SSH笔记中的一个关键概念——基于注解的配置注入关系,特别是在Spring框架4.x版本中的应用。SSH(Struts、Spring、Hibernate)是Java Web开发中的经典组合,而Spring框架以其强大的依赖注入...
Spring 笔记 Spring 是 Java 企业版(Java EE)应用程序的框架,提供了结构化的配置文件,实现了控制反转(IoC)和面向切面编程(AOP),支持表现层、业务逻辑层和持久层。Spring 的核心是 IoC 和 AOP,能够与主流...
本笔记将深入讲解Spring的核心概念和使用方法,帮助你快速掌握这一重要的技术。 1. **注解装配**:在Java世界中,注解(Annotation)是一种元数据,它可以提供额外的信息给编译器或运行时环境。在Spring中,注解被...
### 传智播客 Spring 完全文档 笔记总结 #### 一、Spring入门 ##### 1.1 Spring简介 - **定义**:Spring 是一个开源的控制反转(Inversion of Control, IoC)和面向切面(Aspect Oriented Programming, AOP)的...
### Spring 2.5 学习笔记知识点梳理 #### 第一课:面向抽象编程 - **定义**:面向抽象编程是一种编程范式,强调通过抽象类或接口来设计程序结构,减少对具体实现的依赖。 - **优势**: - 提高了系统的可维护性与...
这篇学习Spring笔记将深入探讨这两个注解的用法、原理以及它们在实际开发中的应用场景。 `@Autowired`注解是Spring框架提供的一种依赖注入(Dependency Injection,DI)机制,用于自动装配Bean。它可以根据类型或...
### 马士兵Spring学习笔记知识点汇总 #### 一、面向接口编程(面向抽象编程) **概念:** 面向接口编程是指在设计系统时,尽量通过接口来定义各个组件之间的交互方式,而不是直接依赖于实现类。这种方式使得系统...
Spring框架支持三种依赖注入方式:构造器注入、设值注入和P命名空间。 #### 二、Spring容器配置与管理 ##### 1. Spring配置文件编写流程 - **导入jar包**: 需要导入Spring核心库和相关的第三方库,例如`spring-...
这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...
标题中的“Spring技术内幕 学习笔记”表明这是一份关于深入理解Spring框架核心机制的资料集合,主要关注Spring框架的内部工作原理和高级用法。描述中的“NULL”没有提供额外信息,但我们可以通过标签“源码”和...
总的来说,《Spring2.5 学习笔记》这份文档将带领读者深入了解Spring2.5的各种核心特性,包括注解驱动的配置、依赖注入的优化、面向切面编程的实现、数据库访问的便捷性、Web MVC的改进以及SpEL的运用。通过对这些...
在本篇"Spring学习笔记(四)"中,我们将...总结一下,这篇"Spring学习笔记(四)"主要涵盖了`@Value`注解的使用和源码解析,包括SpEL在注入过程中的作用。了解并掌握这些知识,将有助于提升你在Spring开发中的技能水平。