组件扫描与注解

# 【非常重要】组件扫描与注解

## 组件扫描(Component-Scan)

通过配置组件扫描,可以使得Spring自动扫描指定的包(package),而不必在Spring的配置文件中逐一声明各个`<bean>`。

在配置组件扫描时,指定的包是“根包”,即例如指定了`cn.tedu.spring`,Spring不仅只扫描这个包,还会扫描它的各层级子包,例如`cn.tedu.spring.dao`、`cn.tedu.spring.dao.impl`这些包。

**注意:仅仅只是设置了组件扫描,Spring是不会管理这个根包下的类的对象的!**

## 注解
在类的声明语句上方添加`@Component`注解,可以使得Spring知道这个类是一个组件,需要进行管理,所以,如果某个类需要被Spring管理,应该将这个类放在被扫描的包中,并且添加注解!

由Spring扫描到的组件(添加了`@Component`的类),会由Spring自动设置Bean Id,值为将类名首字母小写的名称,例如组件类的名称是`UserDao`,则Id是`userDao`,如果需要自定义Bean Id,可以在组件注解中显示的声明,例如:`@Component("userDao")`。

通过组件扫描和注解,可以不必再在XML中配置`<bean>`!


 

## 常用注解

常用的对类进行注解,标识类是组件的:

@Component:通用

@Controller:用于对控制器类注解

@Service:用于对业务逻辑类注解

@Repository:用于对持久层处理类注解

@Named:通用(javax)

以上5个注解,从实现目标和效果上来说,是等效的,但是,基于方便理解代码的目的,应该按需使用,例如对名为`UserService`类,应该使用`@Service`注解,对于非控制器类、非业务逻辑类、非持久层处理类,应该使用`@Component`注解。


## 【了解】其它注解

在类的声明语句上方添加`@Scope`注解用于控制是否单例,例如`@Scope("prototype")`表示非单例;

在类的声明语句上方添加`@Lazy`注解用于控制是否懒加载,例如`@Lazy(true)`表示懒加载;

在方法的声明语句上方添加`@PostConstruct`或`@PreDestroy`可将方法标记为生命周期方法中的初始化方法或销毁方法;


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值