Spring常用注解
使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包),开启注解支持
<?xml version="1.0" encoding="UTF-8"?>
<!--suppress ALL -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.xia"></context:component-scan>
<context:annotation-config/>
</beans>
-
@Autowired:顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。
-
@Resource:与@Autowired类似,但更强大。@autowire通过byType实现,而且必须要求这个对象存在,@resource默认通过byName实现,如果找不到,通过byType实现
-
Qualifier(指定注入Bean的名称:如果容器中有一个以上匹配的Bean,则可以通过@Qualifier注解限定Bean的名称
-
@Component:等价于
组件,放在类上,说明此类被ico容器管理 -
@Service用于标注业务层组件
-
@Controller用于标注控制层组件(如struts中的action)
-
@Repository用于标注数据访问组件,即DAO组件。
-
@Value 用于类成员的初始化
-
@Scope("prototype") Bean的作用域定义
xml与注解
- xml更加万能,维护简单
- 注解:不是自己的类,使用不了,维护复杂
最佳实践:
- xml用来管理bean
- 注解只用来完成属性的注入