User.java
package GradleDemo;
import java.util.Date;
public class User {
private Integer id;
private String name;
private Date bithDate;
public User() {
}
public User(Integer id, String name, Date bithDate) {
super();
this.id = id;
this.name = name;
this.bithDate = bithDate;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBithDate() {
return bithDate;
}
public void setBithDate(Date bithDate) {
this.bithDate = bithDate;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", bithDate=" + bithDate + "]";
}
}
UserDaoService.java
package GradleDemo;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Component;
@Component
public class UserDaoService {
public static int userCount = 3;
private static List<User> users = new ArrayList<>();
static {
users.add(new User(1,"Tyson",new Date()));
users.add(new User(2,"Justin",new Date()));
users.add(new User(3,"Martin",new Date()));
}
public List<User> findAll(){
return users;
}
public User save(User user) {
if(user.getId()==null) {
user.setId(++userCount);
}
users.add(user);
return user;
}
public User findOne(int id) {
for(User user : users) {
if(user.getId()==id) {
return user;
}
}
return null;
}
}
UserResource.java
package GradleDemo;
import java.net.URI;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
@RestController
public class UserResource {
@Autowired
private UserDaoService userDaoService;
@GetMapping("/users")
public List<User> retrieveAllUsers(){
return userDaoService.findAll();
}
@GetMapping("/user/{id}")
public User getUser(@PathVariable int id) {
return userDaoService.findOne(id);
}
@PostMapping("/users")
public ResponseEntity<Object> createUser(@RequestBody User user) {
User savedUser = userDaoService.save(user);
URI location = ServletUriComponentsBuilder
.fromCurrentContextPath()
.path("{id}")
.buildAndExpand(savedUser.getId()).toUri();
return ResponseEntity.created(location).build(); // 201 response is returned
}
}
App.java
package GradleDemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.2.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:28.0-jre'
testImplementation 'junit:junit:4.12'
implementation 'org.springframework.boot:spring-boot-dependencies:2.2.1.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.data:spring-data-rest-hal-browser'
implementation 'org.springframework.boot:spring-boot-devtools:1.3.0.RELEASE'
implementation 'org.springframework.data:spring-data-jpa:2.2.2.RELEASE'
implementation 'javax.persistence:javax.persistence-api:2.2'
implementation 'com.h2database:h2:1.4.200'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
components {
withModule('org.springframework:spring-beans') {
allVariants {
withDependencyConstraints {
it.findAll { it.name == 'snakeyaml' }.each { it.version { strictly '1.19' } }
}
}
}
}
}
bootJar {
mainClassName = 'GradleDemo.App'
}
task runJar{
dependsOn 'assemble'
dependsOn 'jar'
doLast{
javaexec {
main="-jar";
args = [
"build/libs/"+rootProject.name+".jar"
]
}
}
}