Spring中自动检测并申明bean

在Spring中申明bean,一般情况是在XML中用<bean id=""  class="">标签来指定一个类并为其取一个id。但是这样效率很低,Spring提供了自动检测并申明bean的方法,讲解如下:

一、自动检测并申明bean的步骤:

1、用<context:component-scan  base-package="com.springinaction.springidol"></context:component-scan>替换<context:annotation-config/>。前者包含了后者所有功能,而且还提供了bean的检测和自动申明功能。其中,base-package指定要检测的包。

2、在要定义为bean的类定义前加上相应的标注:

@component
    public class Guitar{
       ......
    }

在程序运行的时候,Spring就可以自动检测到该类并把其申明为bean。bean的默认命名为guitar,也就是将类名第一个字母小写,如果你的类名为GuitarInstrument,则bean名字为guitarInstrument,后面的字母大小写不变。

当然,我们可以自定义bean的名称:

@component("guitar1")
    public class Guitar{}

则bean的名字为guitar1。

@component标注表示将该类申明为Spring组件,还有其他几种类型的标注:

二、批量检测和申明bean的方法

一中的方法里描述的是,为每个需要被申明为bean的类添加注解,使Spring能够检测出该类。但是有时候,我们需要批量检测,比如有一个Instrument接口,我们要把所有实现了该接口的类申明为bean,我们可以使用过滤器:

过滤器有两种:一种是包含过滤器<context:include-filter>,指定需要包含的类,另一种是剔除过滤器<context:exclude-filter>,指定不要包含的类。用法:

expression参数指定要包含的类,type指定类型,比如包含expression中的类、注解等,

Spring中自动检测并申明bean

时间: 2024-12-16 03:44:20

Spring中自动检测并申明bean的相关文章

Spring中&lt;ref local=&quot;&quot;/&gt;与&lt;ref bean=&quot;&quot;/&gt;区别

小 Spring中<ref local=""/>与<ref bean=""/>区别 (2011-03-19 19:21:58) 转载▼ 标签: 杂谈   <ref local="xx"/>  用"local"属性指定目标其实是指向同一文件内对应"id"属性值为此"local"值的索引"local"属性的值必须和目标bean的id属性

spring中自动装配bean

首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component public class TestBean{ …… } 开启组件扫描spring才能自动装配bean,创建一个@ComponentScan注解的类 package soundsystem: import org.springframework.context.annotation.componentS

在spring中简单使用Mockito解决Bean依赖树问题

前提 本文不是针对Mockito的入门教学 ,主要叙述如何简单的使用Mockito解决Bean依赖树问题,对于Mockito的学习请找其他的文章或者查阅官方文档 基本概念 Junit初始化及存在的问题 spring应用在unit test时,test是独立运行的,所以需要自行 init ApplicationContext,启动 Ioc容器. Junit要求:Test类中涉及的所有Spring bean 注入成功才能完成applicationContext初始化,并启动IOC容器,否则无法执行u

模拟Spring中applicationContext.xml配置文件初始化bean的过程

package com.xiaohao.action; import java.io.File; import java.lang.reflect.Method; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** *

spring中自动装配byName,byType,constructor

byName:按名称装配,根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null. byType:byType:按类型装配,根据属性的类型,在容器中寻找跟该类型匹配的bean.如果有多个类型匹配的bean,那么将会抛出异常.如果没有找到,即属性值为null. constructor:和byName相似,因为它是去容器中寻找跟构造器函数中参数名相同的bean. byName和byType与constructor的区别是,byName和byType其实就是设值注入,找

Spring中自动创建代理器

1.AbstractAutoProxyCreator 该类继承关系如代码所示: public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport implements SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware { 首先,它继承了ProxyProcessorSupport,查看该类: // 显然,它是个ProxyConfig 拥有AOP

Spring中自动装配

自动装配 在我们了解过constructor-arg和property装配中,都需要配置相应的属性和值或者引用,如果在比较复杂的项目中,就会使得XML的配置变得复杂,自动装配可以使用较少的配置实现.主要通过使用bean的autowire属性来控制,autowire可取值: byName:为属性自动装配id与该属性的名字相同的bean 例如:People中有一个名为dog的Dog类 <beanclass="People" id="p" autowire=&quo

Spring中Bean的定义及作用域的注解实现

Classpath扫描与组件管理: 从Spring3.0开始,Spring JavaConfig项目提供了很多特性,包括使用java而不是xml定义bean,指的是注解 @Configuration,@Bean ,@Import ,@DependsOn @Component是一个通用注解,可用于任何bean @Repository:通常用于注解DAO类,即持久层 @Service:通常用于注解Service类,即服务层 @Controller:通常用于Controller类,即控制层MVC 元注

【Spring】详解Spring中Bean的加载

之前写过bean的解析,这篇来讲讲bean的加载,加载要比bean的解析复杂些,该文之前在小编原文中有发表过,要看原文的可以直接点击原文查看,从之前的例子开始,Spring中加载一个bean的方式: TestBean bean = factory.getBean("testBean"); 来看看getBean(String name)方法源码, @Override public Object getBean(String name) throws BeansException { re