diff --git a/build.gradle b/build.gradle index 3956fdb..829bee4 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ } group = 'com.example.springtest' -version = '0.0.1-SNAPSHOT' +//version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { @@ -17,6 +17,7 @@ implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-jersey' implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly 'com.h2database:h2' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation('org.springframework.boot:spring-boot-starter-test') { diff --git a/src/main/java/com/example/springtest/demo/DemoApplication.java b/src/main/java/com/example/springtest/demo/DemoApplication.java index e609fe6..0cfe13f 100644 --- a/src/main/java/com/example/springtest/demo/DemoApplication.java +++ b/src/main/java/com/example/springtest/demo/DemoApplication.java @@ -2,12 +2,28 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication -public class DemoApplication { +public class DemoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } + /** + * Servletコンテナ起動時の設定クラス認識。 + * + *
+     * Servletコンテナで起動したときにどのクラスが設定クラスなのか認識させます。
+     * 
+ * + * @param SpringApplicationBuilder + * @return SpringApplicationBuilder + */ + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(DemoApplication.class); + } } diff --git a/src/main/java/com/example/springtest/demo/JerseyConfig.java b/src/main/java/com/example/springtest/demo/JerseyConfig.java index 97dc504..c4a4578 100644 --- a/src/main/java/com/example/springtest/demo/JerseyConfig.java +++ b/src/main/java/com/example/springtest/demo/JerseyConfig.java @@ -6,7 +6,7 @@ import javax.ws.rs.ApplicationPath; @Component -@ApplicationPath("/demo") +//@ApplicationPath("/demo") public class JerseyConfig extends ResourceConfig { public JerseyConfig() { diff --git a/src/main/java/com/example/springtest/demo/entities/User.java b/src/main/java/com/example/springtest/demo/entities/User.java index d298436..684a3b3 100644 --- a/src/main/java/com/example/springtest/demo/entities/User.java +++ b/src/main/java/com/example/springtest/demo/entities/User.java @@ -1,17 +1,33 @@ package com.example.springtest.demo.entities; +import javax.persistence.*; + +@Entity // This tells Hibernate to make a table out of this class +@Table(name="USERS") public class User { + @Id +// @GeneratedValue(strategy= GenerationType.AUTO) public String uId; public String name; public String password; public String uri; + public User() { + } + public User(String uId, String name, String password) { this.uId = uId; this.name = name; this.password = password; } +// public User(String uId, String name, String password, String uri) { +// this.uId = uId; +// this.name = name; +// this.password = password; +// this.uri = uri; +// } + public String getuId() { return uId; } diff --git a/src/main/java/com/example/springtest/demo/repositories/UserRepository.java b/src/main/java/com/example/springtest/demo/repositories/UserRepository.java new file mode 100644 index 0000000..d70bb2e --- /dev/null +++ b/src/main/java/com/example/springtest/demo/repositories/UserRepository.java @@ -0,0 +1,7 @@ +package com.example.springtest.demo.repositories; + +import com.example.springtest.demo.entities.User; +import org.springframework.data.repository.CrudRepository; + +public interface UserRepository extends CrudRepository { +} diff --git a/src/main/java/com/example/springtest/demo/resources/UserRest.java b/src/main/java/com/example/springtest/demo/resources/UserRest.java index aaa26eb..e5ea139 100644 --- a/src/main/java/com/example/springtest/demo/resources/UserRest.java +++ b/src/main/java/com/example/springtest/demo/resources/UserRest.java @@ -1,12 +1,11 @@ package com.example.springtest.demo.resources; import com.example.springtest.demo.entities.User; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.example.springtest.demo.repositories.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; -import javax.persistence.NoResultException; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import java.util.*; @@ -16,6 +15,10 @@ public class UserRest { private Map users = new HashMap<>(); + + @Autowired // This means to get the bean called userRepository + // Which is auto-generated by Spring, we will use it to handle the data + private UserRepository userRepository; // @GET // public String getUser(@QueryParam("uId") String uId, @QueryParam("name") String name, @QueryParam("password") String password) { // ObjectMapper objectMapper = new ObjectMapper(); @@ -29,15 +32,19 @@ // } @GET @Produces(MediaType.APPLICATION_JSON) // 戻り値をJSONで返す. - public Collection getUsers() { - return users.values(); // JSONが返る +// public Collection getUsers() { + public Iterable getUsers() { +// return users.values(); // JSONが返る + return userRepository.findAll(); } @Path("/{uId}") @GET @Produces(MediaType.APPLICATION_JSON) // 戻り値をJSONで返す. - public User getUser(@PathParam("uId") String uId) { - User user = users.get(uId); +// public User getUser(@PathParam("uId") String uId) { + public Optional getUser(@PathParam("uId") String uId) { + Optional user = userRepository.findById(uId); +// User user = users.get(uId); if (user != null) { return user; // JSONが返る } else { // uIdが無ければ @@ -51,7 +58,7 @@ String uId = UUID.randomUUID().toString(); User user = new User(uId, name, password); users.put(uId, user); - return user; + return userRepository.save(user); } @Path("/{uId}") @@ -62,7 +69,7 @@ if (user != null) { user.setName(name); user.setPassword(password); - return user; // JSONが返る + return userRepository.save(user); // JSONが返る } else { // uIdが無ければ throw new WebApplicationException(404); // 404が返る } @@ -74,6 +81,7 @@ public User deleteUser(@PathParam("uId") String uId) { User user = users.remove(uId); if (user != null) { + userRepository.deleteById(uId); return user; // JSONが返る } else { // uIdが無ければ throw new WebApplicationException(410); // 410が返る(GONE) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..dff7021 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,20 @@ - +#server.context-path=/demo +# �g�p����f�[�^�\�[�X�̃N���X���i�ȗ������ꍇ�Ɠ����ݒ�j +#spring.datasource.type=com.zaxxer.hikari.HikariDataSource +# �f�[�^�x�[�X�h���C�o�̃N���X�� +spring.datasource.driver-class-name=org.h2.Driver +# JDBC�ł̐ڑ�URL +spring.datasource.url=jdbc:h2:mem:jerseydemodb +#;DB_CLOSE_ON_EXIT=FALSE +# �f�[�^�x�[�X�ւ̐ڑ����[�U +spring.datasource.username=jerseydemouser +# �f�[�^�x�[�X�ւ̐ڑ��p�X���[�h +spring.datasource.password=jerseydemo1234 +# ���������s�����̎w�� +spring.datasource.initialization-mode=always +# ���������s���ۂ�DDL�̎��s���[�h +spring.jpa.hibernate.ddl-auto=update +#spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect +#h2 for debug tool +spring.h2.console.enabled=true \ No newline at end of file