spring之component-scan自动扫描bean


之前讲到可以通过beans元素下面配置bean,可以使用xml或注解自动装配bean属性。现在,spring还可以自动把POJO(简单Java对象)自动配置为bean,不再需要用xml中配置bean元素。

一. 启用自动扫描bean

在beans配置文件中配置<context:component-scan>元素启用自动扫描。spring会在指定的包下扫描bean。

 <context:component-scan base-package="xyz.totok"/>

二. 使用特殊注解需要自动配置的Java类

启用自动扫描bean后,spring会扫描具有特殊注解的Java类,然后把这些类对象添加应用上下文中配置为bean。特殊注解如下:

  1. @Component 通用的构造型注解,标识该类为spring组件。
  2. @Controller 标识该类定义为Spring MVC Controller
  3. @Repository 标识该类定义为数据仓库
  4. @Service 标识该类定义为服务
  5. 使用@Component标注的任意自定义注解

如下使用@Component标识的类

@Component
public class User{}

这个时候spring会自动添加一个user的bean到应用上下文中。
也可以自定义bean的id

@Component("andy")
public class User{}

三. 扫描过滤

扫描过滤机制:<context:include-filter>和<context:exclude-filter>添加扫描过滤内容。如下把所有User的派生类添加到bean。

<context:component-scan base-package="xyz.totok">
   		<context:include-filter type="assignable" expression="xyz.totok.User"/>
</context:component-scan>

扫描过滤通过两个属性(type和expression)来决定过滤规则。type代表扫描类型,总共有5种扫描类型。

过滤器类型描述
annotation扫描使用指定注解所标注的类,通过expression来指定要扫描的注解
assignable扫描派生于expression属性指定的那些类
aspectj扫描expression属性指定的Aspect J表达式所匹配的那些类
custom使用自定义的过滤实现类,该类由expression属性决定,该类实现org.springframework.core.TypeFilter
regex扫描类名称与expression指定的正则表达式匹配的那些类

四. 自定义扫描配置类

component-scan会扫描指定包下面的@Configuration标注的类,该注解标注的类等价于<beans>元素。然后使用@Bean标注bean。

@Configuration
public class SpringMyConfig{
	@Bean
	public User user1(){
		return new User();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值