前言: 一直对Spring中的这四个注解了解不是很深,总是区分不出来他们的使用场景与范围,所以今天打算深入了解一下,查了很多资料,在这里总结一下。

含义

  • @Service 用于标注业务层组件
  • @Controller 用于标注控制层组件
  • @Repository 用于标注数据访问组件,即DAO组件
  • @Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注

区别

当启用上下文扫描时,他们都用于自动检测Spring Bean,并且在依赖项注入方面提供了相同的功能。他们唯一的区别就是在于他们的用途,@Controller用于表示层,@Service 用于在服务层中保存业务逻辑的注释类,而@Repository 用于数据访问层。

举例子

  • DAO层
/**
* Dao层接口
*/

public interface UserDao{

public void save();
}
  • DAO层实现类
/**
* Dao层实现类
*/
@Repository
public class UserDaoImpl implements UserDao{

@Override
public void save(){
System.out.println("保存测试!");
}
}
  • Service层
/**
* Service 接口
*/
public interface UserService{
public void UserSave();
}
  • Service实现类
/**
* Service 实现类
* 业务代码实现
*/
@Service
public class UserServiceImpl implements UserService{

@AutoWired //自动注入
private UserDao userdao;
public void UserSave(){
System.out.println("Service 执行");
userdao.save();
}
}
  • 中间类
/**
* 中间类
*/

@Component
public class DtoClass(){
public void say(){
System.out.println("Dto 执行");
}
}
  • 控制层
/**
* 控制层类
*/
@Controller
public class UserController{
@AtuoWired
private UserService userService;
@AutoWired
private DtoClass dtoClass;
public void save()
{
System.out.println("Controller 执行");
userService.Usersave();
dtoClass.say();
}
}