# 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
  • 接口不变。

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
  • 实现 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 来管理,所以在使用上没有区别,你可以在 ControllerService 上使用 @Component 注解也是可以的,但是为了 语义 和 特殊功能的使用,建议什么层使用什么注解,如果你不知道是哪一层的, 直接使用 @Component 注解就可以了。

内容未完......