java - 春季发布并找不到
问题描述
我尝试创建我的第一个 Spring 后端,用于存储音乐专辑的简单应用程序。不幸的是,我创建的端点都没有工作(我使用邮递员对其进行了测试,请求返回 404,未找到)。以下是我所有与项目相关的文件/代码:
@Repostiory
public interface AlbumRepository extends Repository<Album,Long> {
@Query(value = "SELECT * FROM album", nativeQuery = true)
List<Album> findAlbums();
Album save(Album persisted);
}
@Service
public class AlbumService {
@Autowired
private AlbumRepository albumRepository;
public void saveData(Album album) {
this.albumRepository.save(album);
}
public List<Album> getAllAlbums() {
return this.albumRepository.findAlbums();
}
@PostConstruct
private void init() {}
}
@Entity
@Table(name="album")
public class Album {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="title")
private String title;
}
@RestController
public class AlbumController {
@Autowired
AlbumService albumService;
@RequestMapping(method=RequestMethod.POST, path="/album/post")
public ResponseEntity<String> addAlbum(@RequestBody Album album) {
albumService.saveData(album);
return new ResponseEntity<String>(HttpStatus.OK);
}
@RequestMapping(method=RequestMethod.GET, path="/album/get")
Iterable<Album> getAlbums() {
return albumService.getAllAlbums();
}
}
@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class MusesiteBackEndApplication {
public static void main(String[] args) {
SpringApplication.run(MusesiteBackEndApplication.class, args);
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
我尝试了什么:
使用包添加 @ComponentScan:
@ComponentScan({"com.musesite.dao", "com.musesite.model", "com.musesite.musesitebackend", "com.musesite.restful"})
结果:Field albumRepository in com.musesite.dao.AlbumService required a bean of type 'com.musesite.dao.AlbumRepository' that could not be found.
添加应该创建数据库的 dataSource 方法。
@Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); }
结果:无。
添加:
scanBasePackages
_SpringBootApplication
@SpringBootApplication(scanBasePackages={ "com.musesite.dao", "com.musesite.model", "com.musesite.musesitebackend", "com.musesite.restful"})
结果:Field albumRepository in com.musesite.dao.AlbumService required a bean of type 'com.musesite.dao.AlbumRepository' that could not be found.
不幸的是,他们都没有帮助。
解决方案
试试这个方法:
public interface AlbumRepository extends JpaRepository<Album,Long> {
}
您不需要创建本机查询。您可以使用 findAll() 和 save(album) 而无需任何额外的代码。(它们是自动生成的)
- -编辑
哎呀!还将以下注释添加到您的配置类之一:
@EnableJpaRepositories
推荐阅读
- regex - Ansible 正则表达式在一行中搜索和替换 IP 地址
- python - 为什么 Python 中的“locals”函数会输出一个全局变量?
- domain-driven-design - 用例(应用程序服务)的接口?
- java - Spring Boot 和 Camel- 日志路由持续时间
- javascript - 用于数据获取的自定义钩子
- delphi - 插入新的 DBGrid 行,其中包含来自 TreeView 和备忘录的相应值
- html - 位置绝对和固定块元素如何获得它们的尺寸?
- chart.js - ChartJS 垂直条形图 - 根据指定的最大值测量每列中数据的百分比
- c# - C# - 通过将值直接分配给实例来为对象的属性赋值
- azure - Azure 数据工厂数据流 CosmosDB 接收器“写入吞吐量预算”什么都不做