5. Spring IoC 容器配置-注解方式
5.1 注解定义Bean对象
-
在Bean class 添加 注解
Spring2.5 提供 @Component 效果相当于
<bean>
元素
-
配置包扫描,通知spring 注解Bean 在哪个包下面
使用
<context>
命名空间 ,在spring的配置文件中添加context命令空间<context:component-scan base-package="com.suke"/>
Spring 容器提供@Component 等效三个衍生注解
@Repository 用于注册DAO(持久层 )
@Service 用于注册 Service(业务层)
@Controller 用于注册 Action (表现层)
5.2 注解实现属性依赖注入
通过上一步,我们已经把UserDaoImpl和UserServiceImpl使用对应的注解,交给Spring管理了:
但是在我们的UserServiceImpl类中依赖UserDao, 那我们需要使用属性注入的注解把UserDao注入到UserServiceImpl类:
5.2.1 注入基本类型属性
简单类型属性注入,只有变量才有意义 !
Spring3.0之后,通过@Value注解 结合 spEL 表达式实现
5.2.2 注入类类型的属性
- Spring3.0提供@Value注解
- Spring2.0 提供@Autowired 注解 结合 @Qualifier 注解
或者:
- 单独使用@Autowired,表示按照类型匹配注入
- @Autowired结合@Qualifier(“bean名称”),表示按照bean的name进行匹配注入
- JSR-250规范 提供 @Resource 注解实现注入
或者:
- @Resource没有写name,表示按照类型匹配注入
- @Resource写name,表示按照bean的name进行匹配注入
-
JSR-330规范 提供 @Inject @Named 注解
需要导入javax.inject 的依赖:
或者:
- 只使用@Inject注解,表示按照类型匹配注入
- @Inject配合@Named,表示按照bean的name进行匹配注入
5.3 Bean的作用域注解
<bean>
提供 scope属性,用于描述Bean的作用域
Spring提供@Scope注解,描述Bean的作用域
默认scope作用域 singleton !