【发布时间】:2019-01-06 19:06:41
【问题描述】:
我的存储库接口为
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MyRepository extends JpaRepository<Tokens, Long>{
}
我想在上面的存储库中使用的服务 impl 文件不是 @Component 或 @Service 因为它的对象是使用 new 创建的。所以它不允许在我的服务 impl 类中自动装配或注入存储库。
在这种情况下还有其他方法可以实现吗?
【问题讨论】:
-
为什么在需要访问存储库的对象中使用 new 而不是自动装配?
-
难道您不能使用 JNDI 查找来获取
MyRepository的托管实例吗?我在 Pojos 中使用 EE bean 做到了这一点,但我从未在 Spring 中尝试过。但我认为,这样做没有区别。 -
将应用程序上下文传递给
new类的构造函数。然后您可以使用.getBean方法从上下文中提取Repository。 -
您可以通过使用其中一种静态方法从应用程序上下文获取
Repository实例来获取它。参考这里:stackoverflow.com/questions/129207/… 但是,为什么不让 Spring 妥善管理您的服务呢?如果使用new的代码不是您的或难以重构,您可以有一个包装器对象来执行此操作。如果您不按预期使用框架,它将对您不利,而不是为您提供依赖注入优势。 -
我认为有更好的方法来做这件事,而不是实例化一个新的服务。为什么你不能自动装配这个服务?
标签: java spring spring-boot autowired