我在网上浏览spring mvc教程时复制了一个pom.xml,它有:
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>据我所知,spring有自己的依赖注入内置,这会覆盖默认设置并使用javax.inject吗?
我还在pom中看到了slf4j,没有在代码或xml中进行进一步的设置。
这是如何在幕后工作的,spring会检查lib的文件夹,如果发现任何可重写的lib,它就会这样做?
发布于 2012-01-05 13:14:16
javax.inject的pom中的依赖项
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>与Spring无关。一个名为javax.inject-1.jar的jar。
您可以根据需要使用@Autowired/@Resource/@Inject。请参阅here了解它们的不同之处,也可以在What is the difference between @Inject and @Autowired in Spring Framework? Which one to use under what condition?上进行讨论。
Spring-OSGI,Hibernate都在内部使用它。这就是为什么你会在你的pom中找到依赖的原因。希望这能把事情说清楚。
发布于 2012-01-05 13:19:18
inject使JSR 330支持弹跳。使用inject注解使得应用程序不再依赖于spring -它可以切换到JavaEE6或guice或其他支持该规范的提供者。
发布于 2012-01-05 13:53:26
正如@Aravind告诉javax.inject的那样,依赖与spring无关。它用于获取批注@Inject,它是Java CDI标准的一部分,在Java EE 6 (JSR-299)中引入。
Spring使用@Inject作为自己的@Autowired注释的同义词。
@Autowired和@Inject这两个批注的工作方式与Spring相同,除了它们自己的批注之外,Spring还决定支持一些JSR-299批注。
谈到Simple Logging Facade for Java (SLF4J):
简单日志Facade for Java or (SLF4J)作为各种日志框架(例如java.util.logging、log4j和logback )的简单外观或抽象,允许最终用户在部署时插入所需的日志框架。
https://stackoverflow.com/questions/8737551
复制相似问题