1、Spring中的@ Component,@ Repository和@Service注释有什么区别?
转自()
在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支持自动处理数据库操作产生的异常
在Spring2.5版本中,引入了更多的Spring类注解:@Component,@Service,@Controller。
@Component是一个通用的Spring容器管理的单例bean组件。
而@Repository, @Service, @Controller就是针对不同的使用场景所采取的特定功能化的注解组件。
因此,当你的一个类被@Component所注解,那么就意味着同样可以用@Repository, @Service, @Controller来替代它,同时这些注解会具备有更多的功能,而且功能各异。
@Component 最普通的组件,可以被注入到spring容器进行管理,没有明确的角色。
@Repository 作用于持久层(数据访问Dao层)
@Service 作用于业务逻辑层
@Controller 作用于表现层(spring-mvc的注解)
2、注入Bean的注解一般情况下使用
@Autowired
代码实例
package com.wisely.highlight_spring4.ch1.di;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service //1
public class UseFunctionService {
@Autowired //2
FunctionService functionService;
public String SayHello(String word){
return functionService.sayHello(word);
}
}
1、使用Service声明当前的UseFunctionService 是Spring管理的一个Bean
2、使用Autowired 将functionService的实例注入到UseFunctionService 中,让UseFunctionService 具备FunctionService 的功能。