什么是@Repository和@Autowired用于。 (弹簧)

时间:2010-10-21 13:48:02

标签: java spring annotations repository autowired

我正在学习java 3个月,有时候 我无法理解某些东西的使用目的。

一个主题是依赖注入和spring bean我想出了finally =)

现在我对@Autowired和@Repository这两个注释感到困惑。 首先Autowiring是什么意思?然后 我为什么要使用它们,使用它们和不使用它们有什么区别?

今天我也尝试在spring mvc项目中使用hibernate,我不得不搜索大约15个(类找不到错误的原因)jar文件,因为项目中使用的其他jar文件的依赖项。 这是不是必须这样?这使得初学者学习java非常困难

感谢...

3 个答案:

答案 0 :(得分:33)

@Repository是一个注释,它将特定类标记为数据访问对象,从而阐明了它的作用。同一类别的其他标记是@Service和@Controller

@Autowired是一个具有完全不同含义的注释:它基本上告诉DI容器注入依赖关系。更多信息,请访问 http://apollo89.com/java/spring-framework-2.5.3/api/org/springframework/beans/factory/annotation/Autowired.html
编辑 有关详情,请访问tutorialpointdocs.spring.io

答案 1 :(得分:7)

这两个注释都有不同的用途。

@Autowired :这与您在配置文件中定义的<bean="xyz" autowire="byType">相同。使用@Autowired注释的引用变量(依赖项)将由Spring容器注入@Configuration类中找到的任何匹配的@Bean。
另外,使用@Component,@ Service,@ Repository注释的类也被视为bean,因此它们的对象被注入到匹配的依赖项中。 Spring容器会扫描您为“component-scan”或@ComponentScan(“xyz”)提到的类中的bean。

@Repository :这也是一个spring-framework的注释。当您注释类@Repository时,spring容器会理解它是一个DAO类,并将所有未经检查的异常(从DAO方法抛出)转换为Spring DataAccessException。 DAO类是您编写通过db执行操作的方法的类。

答案 2 :(得分:0)

@Autowired和@Repository是两个不同的概念。 1. @ Repository:这将一个类定义为一个存储库,一般来说,你可以简单地使用@Component,但要具体定义,还有另外3个注释,如Controller,service和repository。主要有2个优点:     1.如果已在servlet.xml中定义(context:component-scan)来扫描已定义的包并通过spring找到它自己的包。     2.您从Spring获得的更多优势,如数据库访问错误转换,因此它主要定义为与使用hibernate或jdbc连接数据库的类一起使用。

@Autowired:在spring的运行时注入依赖,意味着在一个类中,自动装配一个对象,并使用它,所以这个bean将自动生成而不在xml文件中定义