-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
springboot-in-10-steps spring-boot upgrade
- Loading branch information
1 parent
d079bb3
commit f045b91
Showing
23 changed files
with
851 additions
and
479 deletions.
There are no files selected for viewing
24 changes: 0 additions & 24 deletions
24
00-framework-tool-introductions/05.Spring-Boot-Introduction-In-10-Steps/.gitignore
This file was deleted.
Oops, something went wrong.
Binary file removed
BIN
-46.5 KB
...tool-introductions/05.Spring-Boot-Introduction-In-10-Steps/.mvn/wrapper/maven-wrapper.jar
Binary file not shown.
1 change: 0 additions & 1 deletion
1
...troductions/05.Spring-Boot-Introduction-In-10-Steps/.mvn/wrapper/maven-wrapper.properties
This file was deleted.
Oops, something went wrong.
300 changes: 300 additions & 0 deletions
300
00-framework-tool-introductions/05.Spring-Boot-Introduction-In-10-Steps/1.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,300 @@ | ||
<!--- | ||
Current Directory : /in28Minutes/git/java-a-course-for-beginners/52-learn-spring-boot | ||
--> | ||
|
||
## Complete Code Example | ||
|
||
|
||
### /pom.xml | ||
|
||
```xml | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.4.4</version> | ||
<relativePath/> <!-- lookup parent from repository --> | ||
</parent> | ||
<groupId>com.in28minutes</groupId> | ||
<artifactId>learn-spring-boot</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<name>learn-spring-boot</name> | ||
<description>Demo project for Spring Boot</description> | ||
<properties> | ||
<java.version>11</java.version> | ||
</properties> | ||
<dependencies> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-web</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-data-jpa</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>com.h2database</groupId> | ||
<artifactId>h2</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-actuator</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-devtools</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
|
||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
</project> | ||
``` | ||
--- | ||
|
||
### /src/test/java/com/in28minutes/learnspringboot/LearnSpringBootApplicationTests.java | ||
|
||
```java | ||
package com.in28minutes.learnspringboot; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
|
||
@SpringBootTest | ||
class LearnSpringBootApplicationTests { | ||
|
||
@Test | ||
void contextLoads() { | ||
} | ||
|
||
} | ||
``` | ||
--- | ||
|
||
### /src/main/resources/data.sql | ||
|
||
``` | ||
insert into COURSE (ID, AUTHOR, NAME) | ||
values (100001, 'in28minutes', 'Learn Microservices'); | ||
insert into COURSE (ID, AUTHOR, NAME) | ||
values (100002, 'in28minutes', 'Learn FullStack with React and Angular'); | ||
insert into COURSE (ID, AUTHOR, NAME) | ||
values (100003, 'in28minutes', 'Learn AWS, GCP and Azure'); | ||
``` | ||
--- | ||
|
||
### /src/main/resources/application.properties | ||
|
||
```properties | ||
#logging.level.org.springframework=DEBUG | ||
#management.endpoints.web.exposure.include=* | ||
management.endpoints.web.exposure.include=health,metrics | ||
spring.datasource.url=jdbc:h2:mem:testdb | ||
``` | ||
--- | ||
|
||
### /src/main/java/com/in28minutes/learnspringboot/LearnSpringBootApplication.java | ||
|
||
```java | ||
package com.in28minutes.learnspringboot; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
@SpringBootApplication | ||
//@SpringBootConfiguration | ||
//@EnableAutoConfiguration | ||
//@ComponentScan | ||
public class LearnSpringBootApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(LearnSpringBootApplication.class, args); | ||
} | ||
|
||
} | ||
``` | ||
--- | ||
|
||
### /src/main/java/com/in28minutes/learnspringboot/courses/repository/CourseRepository.java | ||
|
||
```java | ||
package com.in28minutes.learnspringboot.courses.repository; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
import com.in28minutes.learnspringboot.courses.bean.Course; | ||
|
||
public interface CourseRepository extends JpaRepository<Course, Long> { | ||
|
||
} | ||
``` | ||
--- | ||
|
||
### /src/main/java/com/in28minutes/learnspringboot/courses/bean/Course.java | ||
|
||
```java | ||
package com.in28minutes.learnspringboot.courses.bean; | ||
|
||
import javax.persistence.Column; | ||
import javax.persistence.Entity; | ||
import javax.persistence.GeneratedValue; | ||
import javax.persistence.Id; | ||
|
||
@Entity | ||
public class Course { | ||
|
||
@Id | ||
@GeneratedValue | ||
private long id; | ||
|
||
//@Column(name="course_name") | ||
private String name; | ||
|
||
private String author; | ||
|
||
public Course() { | ||
} | ||
|
||
public Course(long id, String name, String author) { | ||
super(); | ||
this.id = id; | ||
this.name = name; | ||
this.author = author; | ||
} | ||
|
||
public long getId() { | ||
return id; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public String getAuthor() { | ||
return author; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "Course [id=" + id + ", name=" + name + ", author=" + author + "]"; | ||
} | ||
|
||
} | ||
``` | ||
--- | ||
|
||
### /src/main/java/com/in28minutes/learnspringboot/courses/controller/CourseController.java | ||
|
||
```java | ||
package com.in28minutes.learnspringboot.courses.controller; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
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.PutMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import com.in28minutes.learnspringboot.courses.bean.Course; | ||
import com.in28minutes.learnspringboot.courses.repository.CourseRepository; | ||
|
||
@RestController | ||
public class CourseController { | ||
|
||
@Autowired | ||
private CourseRepository repository; | ||
|
||
// http://localhost:8080/courses | ||
@GetMapping("/courses") | ||
public List<Course> getAllCourses() { | ||
return repository.findAll(); | ||
} | ||
|
||
//// http://localhost:8080/courses/1 | ||
@GetMapping("/courses/{id}") | ||
public Course getCourseDetails(@PathVariable long id) { | ||
|
||
Optional<Course> course = repository.findById(id); | ||
|
||
if(course.isEmpty()) { | ||
throw new RuntimeException("Course not found with id " + id); | ||
} | ||
|
||
return course.get(); | ||
} | ||
|
||
/* | ||
POST http://localhost:8080/courses | ||
{ | ||
"name": "Learn DevOps", | ||
"author": "in28minutes" | ||
}*/ | ||
|
||
//POST - Create a new resource (/courses) | ||
@PostMapping("/courses") | ||
public void createCourse(@RequestBody Course course){ | ||
repository.save(course); | ||
} | ||
|
||
/* | ||
PUT - http://localhost:8080/courses/100001 | ||
{ | ||
"id": 100001, | ||
"name": "Learn Microservices 2", | ||
"author": "in28minutes" | ||
} | ||
*/ | ||
|
||
//PUT - Update/Replace a resource (/courses/1) | ||
@PutMapping("/courses/{id}") | ||
public void updateCourse(@PathVariable long id, @RequestBody Course course){ | ||
repository.save(course); | ||
} | ||
|
||
|
||
//DELETE - Delete a resource (/courses/1) | ||
@DeleteMapping("/courses/{id}") | ||
public void deleteCourse(@PathVariable long id){ | ||
repository.deleteById(id); | ||
} | ||
|
||
|
||
// docker run --detach | ||
// --env MYSQL_ROOT_PASSWORD=dummypassword | ||
// --env MYSQL_USER=courses-user | ||
// --env MYSQL_PASSWORD=dummycourses | ||
// --env MYSQL_DATABASE=courses | ||
// --name mysql | ||
// --publish 3306:3306 mysql:5.7 | ||
} | ||
``` | ||
--- |
Binary file added
BIN
+13.6 KB
00-framework-tool-introductions/05.Spring-Boot-Introduction-In-10-Steps/1.zip
Binary file not shown.
Oops, something went wrong.