`

spring Annotation注入笔记

阅读更多
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使用annotation整合dwr笔记

    Spring框架作为Java领域中最受欢迎的应用框架之一,其强大的依赖注入和面向切面编程功能可以很好地与DWR结合,实现更加灵活高效的服务端逻辑处理。本篇将详细介绍如何使用Spring框架的注解特性来整合DWR。 #### 二...

    学习Spring笔记_Annotation(注解)_Component

    本篇笔记主要关注Spring中的注解(Annotation)和@Component,这两大概念是Spring框架的重要组成部分,也是理解SpringIoC(控制反转)和AOP(面向切面编程)的基础。 首先,注解(Annotation)是Java提供的一种元...

    Spring学习笔记

    Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...

    spring--day02笔记.doc

    Spring框架_day02笔记 Spring框架是Java平台上一个开源的应用程序框架,用于开发企业级应用程序。该框架提供了一个以Bean为中心的配置文件,并提供了依赖注入(Dependency Injection,DI)机制来管理应用程序中的...

    SSH笔记-annotation配置注入关系1

    在本文中,我们将深入探讨SSH笔记中的一个关键概念——基于注解的配置注入关系,特别是在Spring框架4.x版本中的应用。SSH(Struts、Spring、Hibernate)是Java Web开发中的经典组合,而Spring框架以其强大的依赖注入...

    spring笔记

    Spring 笔记 Spring 是 Java 企业版(Java EE)应用程序的框架,提供了结构化的配置文件,实现了控制反转(IoC)和面向切面编程(AOP),支持表现层、业务逻辑层和持久层。Spring 的核心是 IoC 和 AOP,能够与主流...

    Spring笔记整理.zip

    本笔记将深入讲解Spring的核心概念和使用方法,帮助你快速掌握这一重要的技术。 1. **注解装配**:在Java世界中,注解(Annotation)是一种元数据,它可以提供额外的信息给编译器或运行时环境。在Spring中,注解被...

    传智播客 Spring 完全文档 笔记总结

    ### 传智播客 Spring 完全文档 笔记总结 #### 一、Spring入门 ##### 1.1 Spring简介 - **定义**:Spring 是一个开源的控制反转(Inversion of Control, IoC)和面向切面(Aspect Oriented Programming, AOP)的...

    spring2.5 学习笔记

    ### Spring 2.5 学习笔记知识点梳理 #### 第一课:面向抽象编程 - **定义**:面向抽象编程是一种编程范式,强调通过抽象类或接口来设计程序结构,减少对具体实现的依赖。 - **优势**: - 提高了系统的可维护性与...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    这篇学习Spring笔记将深入探讨这两个注解的用法、原理以及它们在实际开发中的应用场景。 `@Autowired`注解是Spring框架提供的一种依赖注入(Dependency Injection,DI)机制,用于自动装配Bean。它可以根据类型或...

    马士兵spring学习笔记

    ### 马士兵Spring学习笔记知识点汇总 #### 一、面向接口编程(面向抽象编程) **概念:** 面向接口编程是指在设计系统时,尽量通过接口来定义各个组件之间的交互方式,而不是直接依赖于实现类。这种方式使得系统...

    学习spring时的笔记 二

    Spring框架支持三种依赖注入方式:构造器注入、设值注入和P命名空间。 #### 二、Spring容器配置与管理 ##### 1. Spring配置文件编写流程 - **导入jar包**: 需要导入Spring核心库和相关的第三方库,例如`spring-...

    学习Spring笔记_AOP_Annotation实现和XML实现

    这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...

    Spring技术内幕 学习笔记

    标题中的“Spring技术内幕 学习笔记”表明这是一份关于深入理解Spring框架核心机制的资料集合,主要关注Spring框架的内部工作原理和高级用法。描述中的“NULL”没有提供额外信息,但我们可以通过标签“源码”和...

    Spring2.5_学习笔记.doc.zip

    总的来说,《Spring2.5 学习笔记》这份文档将带领读者深入了解Spring2.5的各种核心特性,包括注解驱动的配置、依赖注入的优化、面向切面编程的实现、数据库访问的便捷性、Web MVC的改进以及SpEL的运用。通过对这些...

    spring学习笔记(四)

    在本篇"Spring学习笔记(四)"中,我们将...总结一下,这篇"Spring学习笔记(四)"主要涵盖了`@Value`注解的使用和源码解析,包括SpEL在注入过程中的作用。了解并掌握这些知识,将有助于提升你在Spring开发中的技能水平。

Global site tag (gtag.js) - Google Analytics