22

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

一个主题是依赖注入和spring bean,我终于找到了=)

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

同样,今天我尝试在 spring mvc 项目中使用 hibernate,由于项目中使用的其他 jar 文件的依赖关系,我不得不搜索大约 15 个(导致类未找到错误)jar 文件。一定要这样吗?这使得初学者学习java非常困难

谢谢...

4

3 回答 3

39

@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
编辑更多信息

于 2010-10-21T13:55:59.620 回答
10

两种注释都有不同的用途。

@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 执行操作的类。

于 2017-11-09T12:58:22.250 回答
1

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

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

于 2015-10-07T09:34:43.457 回答