@Repository
这个是用来标注持久层类的(DAO),让Spring能识别扫描到他的实现类,并交给容器管理,能识别为bean,那用其他的注解也可以为什么非要它?因为同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
@Component
可以把普通pojo实例化到spring容器中,相当于配置文件中的
@Service
标注业务层组件,可以起别名@Service(“name”),注入别的类
@Controller
@Controller用于标注控制层组件(如struts中的action)
@Autowired
可以对类成员、方法和构造函数完成自动装配工作,避免使用更多的setter方法的使用,
比如这里有个标注了@Service的类
@Service
public class MyService {
@Autowired
private MyRepository myRepository;
public void save(){
myRepository.save();
}
}
@Service标注之后,Spring会自动为这个类在容器中默认生成一个bean,名字就是其类名首字母小写,方便其他类引用
@Autowired在这里就会自动帮myRepository在容器中找它相关的bean,找到之前的这个类
@Repository("myRepository")
public class MyRepositoryImps implements MyRepository{
@Override
public void save() {
System.out.println("myRepositoryImps save");
}
}
自动给, private MyRepository myRepository,赋予实际属性意义