我制作了一个测试Spring Controller应用程序->服务->存储库
Controller->
@RestController
public class HelloController {
@Autowired
private ProductServiceImpl productService;
@RequestMapping("/getAll")
public List getAll(){
return productService.getAll();
}
}
服务->
@Service
public class ProductServiceImpl implements Services.ProductService {
@Autowired
private ProductRepository productRepository;
@Override
public List<Product> getAll() {
return productRepository.findAll();
}
}
存储库->
@Repository
public interface ProductRepository extends JpaRepository<Product,Long> {
}
应用程序->
@SpringBootApplication
@EnableJpaRepositories("Repository")
@ComponentScan("com.lopamoko")
public class CloudliquidApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(CloudliquidApplication.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
我正在尝试在控制器中执行 @Autowired 私人ProductServiceImpl productServiceImpl; -他发誓没有豆子。 -我在Application Bean中进行操作-它开始发誓,现在无法从Service调用它为ProductRepository(接口)找到Bean。如何为接口制作bean?
答案 0 :(得分:0)
我认为您的问题出在@EnableJpaRepositories
的值上,这可能会引起误解,并且指向错误的程序包? @EnableJpaRepositories
的值表示要扫描存储库的基本软件包。
如果ProductRepository与“ com.lopamoko”一起使用,则可以将该值保留为空。
@SpringBootApplication
@EnableJpaRepositories
@ComponentScan("com.lopamoko")
public class CloudliquidApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(CloudliquidApplication.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
因为您已指定要在@ComponentScan("com.lopamoko")
内扫描的软件包
如果您的存储库位于其他软件包中,则需要将软件包指定为@EnableJpaRepositories
的值
@SpringBootApplication
@EnableJpaRepositories("com.repository")
@ComponentScan("com.lopamoko")
public class CloudliquidApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(CloudliquidApplication.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
别忘了还用JPA注释@Entity