【问题标题】:Spring post and get not found春季发布并找不到
【发布时间】:2019-06-20 19:00:58
【问题描述】:

我尝试创建我的第一个 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();
    }

}

我尝试了什么:

  1. 在包中添加@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.

  1. 添加应创建数据库的 dataSource 方法。

    @豆 @ConfigurationProperties(前缀=“spring.datasource”) 公共数据源数据源(){ 返回 DataSourceBuilder.create().build(); }

结果:无。

  1. SpringBootApplication 中添加scanBasePackages

    @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.

不幸的是,他们都没有帮助。

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    试试这个方法:

    public interface AlbumRepository extends JpaRepository<Album,Long> {
    
    }
    

    您无需创建本机查询。 您可以使用 findAll() 和 save(album) 而无需任何额外的代码。 (它们是自动生成的)

    ---编辑

    哎呀!还将以下注释添加到您的配置类之一:

    @EnableJpaRepositories
    

    【讨论】:

    • 试过了,没有结果。
    • 也添加@ComponentScan
    • 应用程序不使用此注释运行。错误说:Field albumRepository in com.musesite.dao.AlbumService required a bean of type 'com.musesite.dao.AlbumRepository' that could not be found.我在public class MusesiteBackEndApplication上方使用了@ComponentScan({"com.musesite.dao", "com.musesite.model", "com.musesite.musesitebackend", "com.musesite.restful"})
    • AlbumRepository 扩展了 JpaRepository
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    相关资源
    最近更新 更多