# Spring教程 - 5 IoC容器 - 基于注解配置(1)
现在在开发的时候,使用 XML 来配置 Spring 使用的比较少了,现在大多数都是使用注解的方式,主要是方便。
但是 XML 的方式不是白学,实现的功能都是一样的,就是配置方式不同而已。
下面就来介绍使用如何注解来进行 Spring IoC 的容器的配置。
# 5.1 注解的使用
# 1 创建Bean类
下面直接实现在 Controller 中去调用 Service,在 Service 中去调用 Dao,这样的结构来实现注解装配。
- 还是使用
Controller → Service(接口 + 实现类) → DAO(接口 + 实现类)
的分层架构,并通过接口 + 实现类的方式组织代码。
----------------dao层----------------
IUserDao.java
package com.foooor.hellospring.dao;
public interface IUserDao {
/**
* 获取用户
*/
void getUser();
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 接口不变。
UserDaoImpl.java
package com.foooor.hellospring.dao.impl;
import com.foooor.hellospring.dao.IUserDao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements IUserDao {
/**
* 获取用户
*/
public void getUser() {
System.out.println("dao 获取用户信息");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 实现 IUserDao 接口,并给类添加
@Repository
注解。
@Repository
表示的是持久层的 bean 注解。Spring 提供了多个注解,用于标注 Java 类,并在后续的运行中,将他们作为 Spring Bean 来管理。
Spring常用组件注解如下:
注解 | 作用 | 与 @Component 的关系 |
---|---|---|
@Component | 通用注解,标记一个类交由 Spring 容器管理 | 基础注解 |
@Controller | 用在控制层,也就是Controller层,将控制层的类标识为 Spring Bean | @Component 的派生 |
@Service | 用在业务层上,也就是 Service 层,将业务层类标识为 Spring Bean | @Component 的派生 |
@Repository | 用在数据访问层,也就是 Dao层,将 Dao 标识为 Spring Bean | @Component 的派生 |
@Controller
、@Service
、@Repository
都是从@Component
的派生来的,它们的功能基本是一样的,都是将类交由 Spring 来管理,所以在使用上没有区别,你可以在Controller
和Service
上使用@Component
注解也是可以的,但是为了 语义 和 特殊功能的使用,建议什么层使用什么注解,如果你不知道是哪一层的, 直接使用@Component
注解就可以了。
内容未完......