[英]How can I use a JpaRepository, with @Autowired, inside a service class?
我已經閱讀了這些問題,但沒有一個有效:
Spring boot MVC - 無法在服務類中自動裝配存儲庫
為什么不能@Autowired 一個 JPA 存儲庫 - Spring boot + JPA
還有這個: https ://www.baeldung.com/spring-autowired-field-null
不幸的是,他們都沒有工作。
我所擁有的是:
服務接口:
@Service
public interface DayTradeService {
public List<DayTrade> getDayTrades(List<NotaDeCorretagem> corretagens);
}
服務實施:
public class DayTradeServiceImpl implements DayTradeService {
@Autowired
private DayTradeRepository dayTradeRepository;
@Override
public List<DayTrade> getDayTrades(List<NotaDeCorretagem> corretagens) {
// Several lines of code and some of them is trying to use dayTradeRepository.
}
}
我的 DayTradeRepository:
@Repository
public interface DayTradeRepository extends JpaRepository<DayTrade, Integer> {}
在我的DayTradeController
(用@Controller
注釋)中,我可以將 dayTradeRepository 與@Autowired
一起使用。 但是在服務類中,我無法使用。 我收到這條消息:
Cannot invoke "meca.irpf.Repositories.DayTradeRepository.getDayTrades()" because "this.dayTradeRepository" is null"
我怎樣才能使它成為可能?
在我接受尼基塔的回答后編輯:
我沒有發布Controller
代碼,但它沒有@Autowired
服務類DayTradeServiceImpl
。 這就是我缺少的一點。 在尼基塔指出之后,我可以解決問題。
您不需要創建新對象。 你必須這樣打電話:
@Controller
@RequestMapping("/test")
public class TestController {
@Autowired
private DayTradeServiceImpl dayTradeService;
@GetMapping(value = "/get")
public void getTrades() {
dayTradeService.getDayTrades(...);
}
}
並為 DayTradeServiceImpl 設置注解@Service。
@Service
public class DayTradeServiceImpl implements DayTradeService {
@Autowired
private DayTradeRepository dayTradeRepository;
@Override
public List<DayTrade> getDayTrades(List<NotaDeCorretagem> corretagens) {
// Several lines of code and some of them is trying to use dayTradeRepository.
}
}
Spring 框架使用控制反轉,它有 bean 的容器。 對於檢測 bean,請使用如下注解:@Service、@Component、@Repository。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.