通过在classpath自动扫描方式把组件纳入spring容器中管理。

本文介绍Spring框架2.5版本引入的自动扫描机制,通过配置指定目录下的组件,并将其纳入Spring容器进行管理。文章详细解释了如何启用自动扫描,以及@Component、@Service、@Controller和@Repositiory等注解的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿。spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component、@Service、@Controller、@Repositiory注解的类,并把这些类自动纳入spring容器中管理。


要使用自动扫描机制,我们需要打开以下配置信息:
1、加入context组件,导入注解对应jar:
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd

2、打开组件自动扫描:
<context:component-scan base-package="..."/>
base-package属性指定要扫描的package,包括其子package。

如果打开了自动扫描的话,会自动开启一些其他context配置组件,比如前面的:<context:annotation-config/>就可以省略了

@Service用于标注业务层组件、
@Controller用于标注控制层组件、
@Repository用于标注数据访问组件,即DAO组件
@Component泛指所有组件,如果无法判断就使用它
暂时这四个注解没多大区别。

四个组件中都只有一个value属性,表示bean的id属性。默认值为类名的首字母大写

代码片段:
@Repository
public class PersonDaoBean implements PersonDao {

@Service(value="personService")
public class PersonServiceBean implements PersonService {
@Resource(name="personDaoBean")
private PersonDao personDao;

既然可以自动扫描,使用注解形式生成bean了,我们在原来xml中海油一些属性,例如scope属性如何设置呢?
scope属性 @Scope(value="...") 默认值是singleton
初始化方法:@PostConstruct 作用在方法上
销毁方法: @PreDestory 作用在方法上

@PostConstruct
public void init(){

@PreDestroy
public void destory(){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值