Difference between revisions of "Spring tips"
From DarkWiki
(→Pageable) |
(→Pageable) |
||
| Line 59: | Line 59: | ||
http://localhost:8080/api/test/pager?sort=andy,desc&sort=age,asc | http://localhost:8080/api/test/pager?sort=andy,desc&sort=age,asc | ||
</pre> | </pre> | ||
| + | |||
| + | It will output something like: | ||
| + | |||
| + | <source lang="json"> | ||
| + | {"content":["test"],"pageable":{"sort":{"sorted":true,"unsorted":false,"empty":false},"offset":0,"pageNumber":0,"pageSize":10,"paged":true,"unpaged":false},"last":true,"totalPages":1,"totalElements":1,"number":0,"sort":{"sorted":true,"unsorted":false,"empty":false},"size":10,"first":true,"numberOfElements":1,"empty":false} | ||
| + | </source> | ||
Revision as of 11:52, 2 April 2020
Configuration
@Value
Simple setting of values.
@Value("${prop.strName:default value}}")
private String localDir;
@Value("${prop.intName:14}}")
private int localDir;
Apply a setting, defaulting to a subdirectory of the temporary folder.
@Value("${prop.name:#{systemProperties['java.io.tmpdir']+'/subdir'}}")
private String localDir;
When a value is not present in the application.properties file, assume null.
@Value("${prop.name:#{null}}")
private String remoteUrl;
Noteworthy classes
| Class | Notes |
|---|---|
| ClassPathScanningCandidateComponentProvider | Used for scanning for annotated classes etc. See: https://gist.github.com/skempken/dbb2ad55d213cd6a1f50 |
| SpringDataWebProperties | A good example of how Spring configuration properties are bound from YML (etc.) |
Further reading
A list of configuration properties can be found here: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Data
Pageable
Given an endpoint:
@GetMapping("/api/test/pager")
public Page<String> pager(@PageableDefault(sort = "name",direction = Sort.Direction.ASC) Pageable pageable) {
return new PageImpl<>(List.of("test"),pageable,1);
}
It can be called using:
http://localhost:8080/api/test/pager?sort=andy,desc&sort=age,asc
It will output something like:
{"content":["test"],"pageable":{"sort":{"sorted":true,"unsorted":false,"empty":false},"offset":0,"pageNumber":0,"pageSize":10,"paged":true,"unpaged":false},"last":true,"totalPages":1,"totalElements":1,"number":0,"sort":{"sorted":true,"unsorted":false,"empty":false},"size":10,"first":true,"numberOfElements":1,"empty":false}