I tried to create my first Spring Back-end, simple application that stores music albums. Unfortunately none of the endpoints that I created work (I tested them using postman, requests return 404, not found). Below are all my project-related files/code:
@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();
}
}
What I tried:
Adding @ComponentScan with packages:
@ComponentScan({"com.musesite.dao", "com.musesite.model", "com.musesite.musesitebackend", "com.musesite.restful"})
Result: Field albumRepository in com.musesite.dao.AlbumService required a bean of type 'com.musesite.dao.AlbumRepository' that could not be found.
Adding dataSource method that should create database.
@Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); }
Result: None.
Adding
scanBasePackagesinSpringBootApplication:@SpringBootApplication(scanBasePackages={ "com.musesite.dao", "com.musesite.model", "com.musesite.musesitebackend", "com.musesite.restful"})
Result: Field albumRepository in com.musesite.dao.AlbumService required a bean of type 'com.musesite.dao.AlbumRepository' that could not be found.
Unfortunately none of them help.