7. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
8. Coiney
• admin-api
• API
• web-api
• Web
API
• mobile-api
•
API
• partner-api
•
API
• antisocial-force-
checker
• API
• emoney-api
• API
Cloud Config
9. Spring Boot Gradle
coiney-api 1.5.18 3.5.1
API
admin-api, web-api, mobile-
api
coiney-api-
config-server
1.5.9 2.9 Spring Cloud Config Server
coiney-emoney 1.5.16 3.5.1 API
antisocial-
force-checker
1.4.1 3.3 API
Spring Boot 2.0.x Gradle 4+
10.
11. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
20. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
21. // 60
// 0
spring.cloud.config.server.git.refresh-rate=60
Git Refresh Rate
You can control how often the config server will fetch updated configuration
data from your Git backend by using spring.cloud.config.server.git.refreshRate.
The value of this property is specified in seconds. By default the value is 0,
meaning the config server will fetch updated configuration from the Git repo
every time it is requested.
[ ]
Spring Cloud Config Server 2.0.2
22. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
24. Spring Boot Starter Json
• Jackson Auto-configuration
•
• jackson-databind
• jackson-datatype-jdk8
• jackson-datatype-jsr310
• jackson-module-parameter-names
25. WebMvcConfigurerAdapter.class
• Spring 5 Java8+ default
• WebMvcConfigurer.java
public class WebMvcConfig extends WebMvcConfigurerAdapter {}
public class WebMvcConfig implements WebMvcConfigurer {}
26. - import org.springframework.boot.autoconfigure.web.ErrorAttributes;
+ import org.springframework.boot.web.servlet.error.ErrorAttributes;
- import org.springframework.boot.autoconfigure.web.ErrorController;
+ import org.springframework.boot.web.servlet.error.ErrorController;
Spring Boot 2 Spring 5 Servlet Reactive
27. HtmlUtils.htmlEscape()
// 4.3.x
public static String htmlEscape(String input, String encoding) {
Assert.notNull(encoding, "Encoding is required");
if (input == null) {
return null;
}
// 5.0.x
public static String htmlEscape(String input, String encoding) {
Assert.notNull(input, "Input is required");
Assert.notNull(encoding, "Encoding is required");
input null Exception
28. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
38. Flyway 3 -> 5
2019-09-11 03:43:15.152 ERROR --- Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path
resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init
method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Migration checksum mismatch for
migration 1
-> Applied to database : 1750005324
-> Resolved locally : -558371367
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.jav
a:1583)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
545)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:
851)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
at com.b1a9idps.sample.view.Application.main(Application.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
39. Flyway 3 -> 5
Important note for users upgrading from Flyway 3.x:
This release no longer supports a schema history table upgrade from Flyway
3.x. You must upgrade to Flyway 4.2.0 first before upgrading to Flyway 5.0.0.
3 -> 4
4 -> 5
Flyway
schema_version flyway_schema_history
43. 2019-09-25 23:05:33.882 WARN --- Could not find schema history table
`sample`.`flyway_schema_history`, but found `sample`.`schema_version` instead.
You are seeing this message because Flyway changed its default for flyway.table
in version 5.0.0 to flyway_schema_history and you are still relying on the old
default (schema_version). Set flyway.table=schema_version in your configuration
to fix this. This fallback mechanism will be removed in Flyway 6.0.0.
6
44. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•
45. JUnit
JUnit 5 Spring Boot Starter Test JUnit 4
Spring Boot 2.2.x JUnit 5
Mockito
1 2
AssertJ
2 3
47. @ExtendWith(MockitoExtension.class)
class StubTest {
@Mock Hoge hoge;
@Test
void test() {
when(hoge.getName()).thenReturn("uchitate");
}
class Hoge {
String getName() { return "";}
}
}
Unnecessary stubbings detected.
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
1. -> at com.coiney.StubTest.test(StubTest.java:18)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc
for UnnecessaryStubbingException class.
org.mockito.exceptions.misusing.UnnecessaryStubbingException:
Unnecessary stubbings detected.
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
1. -> at com.coiney.StubTest.test(StubTest.java:18)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc
for UnnecessaryStubbingException class.
48. •
•
• Gradle
• Spring Cloud Config Server
• Spring Web
• Spring Data
• Spring Data JPA
• Flyway
• Testing
• Configuration Property Binding
•