ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
???? ??? ??
??? ?? (?https://spring.io/projects/spring-boot?) ?????
??? ?????? ? ??? ?? ??? ? ?? ????
????. ? ??? ??? ??? ?? ??? ?? ????
????? ??? ? ?? ??? ?????.
?? ??
¡ñ ??? ??? ?? ??? ?????.
¡ñ ??? ??? ???? ?? ??? ??? ? ????.
¡ñ ??? ??? ???? ? ??????? ??? ? ????.
¡ñ ??? ??? ???? ?? ??? ??? ???? ??????? ??? ?
????.
¡ñ ??? ?? ??????? ?? ??? ???? ???? ? ? ????.
?? ??? ?? ???? ??? ??? ??? ?? ??? ?? ??? ? ????.
¡ñ ??? ?? ??
¡ð ??? ??
¡ð ?? ??
¡ð ?? ? ??
¡ð ????? ?? ??? JAR
¡ñ ??? ?? ??
¡ð ??? ?? ?? ??
¡ö SpringApplication
¡ö ?? ??
¡ö ??
¡ö ???
¡ö Spring-Boot-Devtools
¡ð ?? ?? ??
¡ö ??? ? MVC
¡ö ??? ???
¡ö ??? ????
¡ö REST ?????
¡ñ ??? ?? ??
¡ð ?????
¡ð ????
¡ð ????
1?: ??
1. ?? ??
? ??? ??
2. ?? ??
???
¡ñ ?? ??????? ?? ??? ?? ?. (???? ???? ????? ??
????.)
¡ñ 2007??? ???? ???? ?? ? ?? 10?? ?? ????.
¡ñ ??, ??? ?????, JPA, ??????? ?? ???? ??? ????.
¡ñ Youtube/??? ???? ?? ?? ??? ???? ???? ????.
¡ñ (???? Whiteship.me ?? ???? ?? ?? ???? ??? ? ???.)
¡ñ (? ???? ?? ?? ??? ?? ??? ?? ???? ???.. ??? ????.)
2?: ??? ?? ????
???? ??? ?? ? ??? ??? ??? ???? ??? ?? ?????? ???
??? ?????.
3. ??? ?? ??
https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#getting-started
-introducing-spring-boot
4. ??? ?? ????
https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#getting-started
-maven-installation
5. ??? ?? ???? ???
https://start.spring.io/
6. ??? ?? ???? ??
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-structuring-y
our-code
??? ?? ???? ??? ??
¡ñ ?? ?? (srcmainjava)
¡ñ ?? ??? (srcmainresource)
¡ñ ??? ?? (srctestjava)
¡ñ ??? ??? (srctestresource)
?? ?????? ??
¡ñ ?? ???
3?: ??? ?? ??
2???? ??? ??? ?? ??? ?????. ??? ??? ???? ¡®??? ??',
¡®?? ??' ??? ¡®?? ??? ????'? ?? ?????.
7. ??? ?? ??
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-dependency
-management
8. ??? ?? ??
¡ñ ?? ?? ??? ??? ??
¡ñ ?? ?? ???? ??? ??
¡ñ ?? ??? ?? ????
¡ñ https://mvnrepository.com/
9. ?? ?? ??
¡ñ @EnableAutoConfiguration (@SpringBootApplication ?? ?? ??)
¡ñ ?? ?? ? ??? ??? ??
¡ð 1??: @ComponentScan
¡ð 2??: @EnableAutoConfiguration
¡ñ @ComponentScan
¡ð @Component
¡ð @Configuration @Repository @Service @Controller @RestController
¡ñ @EnableAutoConfiguration
¡ð spring.factories
¡ö org.springframework.boot.autoconfigure.EnableAutoConfigu
ration
¡ð @Configuration
¡ð @ConditionalOnXxxYyyZzz
10. ?? ?? ??? 1?: Starter? Autoconfigure
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-developin
g-auto-configuration
¡ñ Xxx-Spring-Boot-Autoconfigure ??: ?? ??
¡ñ Xxx-Spring-Boot-Starter ??: ??? ??? ??
¡ñ ?? ??? ??? ?? ???
¡ð Xxx-Spring-Boot-Starter
¡ñ ?? ??
1. ??? ??
<dependencies>
<dependency>
<groupId>?org.springframework.boot?</groupId>
<artifactId>?spring-boot-autoconfigure?</artifactId>
</dependency>
<dependency>
<groupId>?org.springframework.boot?</groupId>
<artifactId>?spring-boot-autoconfigure-processor?</artifactId>
<optional>?true?</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>?org.springframework.boot?</groupId>
<artifactId>?spring-boot-dependencies?</artifactId>
<version>?2.0.3.RELEASE?</version>
<type>?pom?</type>
<scope>?import?</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. @Configuration ?? ??
3. src/main/resource/META-INF? spring.factories ?? ???
4. spring.factories ?? ?? ?? ?? ??
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
FQCN,
FQCN
5. mvn install
11. ?? ?? ??? 2?: @ConfigurationProperties
¡ñ ???? ????
¡ð @ConditionalOnMissingBean
¡ñ ? ??? ?? ??
¡ð @ConfigurationProperties(¡°holoman¡±)
¡ð @EnableConfigurationProperties(HolomanProperties)
¡ð ???? ?? ?? ??
<dependency>
<groupId>?org.springframework.boot?</groupId>
<artifactId>?spring-boot-configuration-processor?</artifactId>
<optional>?true?</optional>
</dependency>
12. ?? ? ?? ??
¡ñ ??? ??? ??? ???.
¡ð ?? ?? ??
¡ð ?? ??
¡ð ??? ???? ??
¡ð ??? ???
¡ð ??? ??? ??
¡ð ????? ??? ??
¡ð ?? ?? ? ??
¡ñ ? ?? ??? ?? ??? ? ???? ???? ?????? ?? ??? ???
?? ??.
¡ð ServletWebServerFactoryAutoConfiguration (??? ? ?? ??)
¡ö TomcatServletWebServerFactoryCustomizer (?? ??????)
¡ð DispatcherServletAutoConfiguration
¡ö ??? ??? ??
13. ?? ? ?? ?? 1?: ????? ?? ??
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.
html
¡ñ ?? ??? ????? ??
¡ñ ? ?? ?? ?? ??
¡ñ ??
¡ð server.port
¡ð ?? ??
¡ð ApplicationListner<ServletWebServerInitializedEvent>
14. ?? ? ?? ?? 2?: HTTPS? HTTP2
https://opentutorials.org/course/228/4894
https://gist.github.com/keesun/f93f0b83d7232137283450e08a53c4fd
¡ñ HTTPS ????
¡ð ???? ???
¡ð HTTP? ????
¡ñ HTTP ???? ???? ????
¡ð https://github.com/spring-projects/spring-boot/tree/v2.0.3.RELEASE/spring-bo
ot-samples/spring-boot-sample-tomcat-multi-connectors
¡ñ HTTP2 ??
¡ð server.http2.enable
¡ð ???? ??? ???? ?? ??.
15. ?? HTTP2
¡ñ JDK9? Tomcat 9+ ??
¡ñ ? ??? ?? ?? ??
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.
html#howto-configure-http2-tomcat
16. ????? ?? ??? JAR
https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html
¡°??? ?? JAR ?? ??? ??? ? ???¡±
¡ñ mvn package? ?? ?? ??? ?JAR ?? ¡°???"? ?? ?.
¡ñ spring-maven-plugin? ??? ? (???)
¡ñ ?? ¡°uber¡± jar ? ??
¡ð ?? ??? (??? ? ??????)? ??? ???? ??
¡ð ?? ???? ??? ? ?? ??
¡ö ?? ?????? ????..
¡ð ??? ???? ??? ?? ??? ? ????
¡ñ ??? ??? ??
¡ð ?? JAR : ????? ???? ?? JAR? ???? ????? ??? ???.
¡ð ?????? ???? ????? ?? ??
¡ð org.springframework.boot.loader.jar.JarFile? ???? ?? JAR? ???.
¡ð org.springframework.boot.loader.Launcher? ???? ????.
17. ??? ?? ?? ??
¡ñ ??? ??
¡ð ??? ??? ????? ? ??? ?????
¡ñ ?? ??
¡ð @EnableAutoConfiguration? ? ???? ???.
¡ñ ?? ? ??
¡ð ? ??? ??? ??? ??? ?? ??? ???? ??.
¡ñ ????? ?? ??? JAR
¡ð spring-boot-maven ????? ??? ?????..
4?: ??? ?? ??
3???? ??? ??? ???? ?? ??? ???? ????? ?????? ??
??? ?????.
18. ??? ?? ?? ??
??? ?? ?? ?? ?? ?? ??
¡ñ SpringApplication
¡ñ ?? ??
¡ñ ????
¡ñ ??
¡ñ ???
¡ñ Spring-Dev-Tools
¡ñ ??? ? MVC
¡ñ ??? ???
¡ñ ??? ????
¡ñ REST API ?????
¡ñ ??? ?? ???
19. SpringApplication 1?
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-applicatio
n.html#boot-features-spring-application
¡ñ ?? ?? ?? INFO
¡ð ?? ?? ??? ??? ??? ??
¡ñ FailureAnalyzer
¡ñ ??
¡ð banner.txt | gif | jpg | png
¡ð classpath ?? spring.banner.location
¡ð ${spring-boot.version} ?? ??? ??? ? ??.
¡ð Banner ??? ???? SpringApplication.setBanner()? ?? ??.
¡ð ?? ?? ??
¡ñ SpringApplicationBuilder? ?? ?? ?? ??
20. SpringApplication 2?
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-applicatio
n.html#boot-features-application-events-and-listeners
¡ñ ApplicationEvent ??
¡ð ApplicationContext? ??? ?? ???? ???? @Bean?? ??? ?
??.
¡ö SpringApplication.addListners()
¡ñ WebApplicationType ??
¡ñ ?????? ???? ????
¡ð ApplicationArguments? ??? ??? ??? ??? ?? ?.
¡ñ ?????? ??? ? ?? ???? ?? ?
¡ð ApplicationRunner (??) ?? CommandLineRunner
¡ð ?? ?? ?? @Order
21. ?? ?? 1?
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-c
onfig
??? ? ?? ?? ??
¡ñ properties
¡ñ YAML
¡ñ ?? ??
¡ñ ??? ?? ????
???? ?? ??
1. ?? ? ????? ?? spring-boot-dev-tools.properties
2. ???? ?? @TestPropertySource
3. @SpringBootTest ?????? properties ?????
4. ??? ?? ????
5. SPRING_APPLICATION_JSON (?? ?? ?? ??? ???) ? ????
????
6. ServletConfig ????
7. ServletContext ????
8. java:comp/env JNDI ?????
9. System.getProperties() ?? ??? ????
10. OS ?? ??
11. RandomValuePropertySource
12. JAR ?? ?? ?? ????? application properties
13. JAR ?? ?? ?? ????? application properties
14. JAR ?? ?? application properties
15. JAR ?? ?? application properties
16. @PropertySource
17. ?? ???? (SpringApplication.setDefaultProperties)
application.properties ?? ?? (??? ??? ?? ???.)
1. file:./config/
2. file:./
3. classpath:/config/
4. classpath:/
??? ????
¡ñ ${random.*}
???? ??
¡ñ name = keesun
¡ñ fullName = ${name} baik
22. ?? ?? 2?
??-??? ???? @ConfigurationProperties
¡ñ ?? ????? ??? ??? ? ??
¡ñ ??? ???? ?? ?? ??? ? ??
¡ð @EnableConfigurationProperties
¡ð @Component
¡ð @Bean
¡ñ ??? ?? ???
¡ð context-path (??)
¡ð context_path (?????)
¡ð contextPath (??)
¡ð CONTEXTPATH
¡ñ ???? ?? ???
¡ð @DurationUnit
¡ñ ???? ? ??
¡ð @Validated
¡ð JSR-303 (@NotNull, ...)
¡ñ ?? ?? ??
¡ñ @Value
¡ð SpEL ? ??? ? ???...
¡ð ?? ?? ???? ?? ?? ????.
23. ????
@Profile ?????? ????
¡ñ @Configuration
¡ñ @Component
?? ????? ??? ? ????
¡ñ spring.profiles.active
?? ????? ??? ????
¡ñ spring.profiles.include
????? ????
¡ñ application-{profile}.properties
24. ?? 1?: ??? ?? ?? ?? ??
?? ??? VS ??
¡ñ Commons Logging?, SLF4j
¡ñ JUL, Log4J2, ?Logback
??? 5? ?? ?? ?? ??
¡ñ https://docs.spring.io/spring/docs/5.0.0.RC3/spring-framework-reference/overview.ht
ml#overview-logging
¡ñ Spring-JCL
¡ð Commons Logging -> SLF4j or Log4j2
¡ð pom.xml? exclusion ??? ?.
??? ?? ??
¡ñ ?? ??
¡ñ --debug (?? ?? ?????? ??? ???)
¡ñ --trace (?? ? ??? ???)
¡ñ ?? ??: spring.output.ansi.enabled
¡ñ ?? ??: logging.file ?? logging.path
¡ñ ?? ?? ??: logging.level.??? = ?? ??
25. ?? 2?: ??????
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html
??? ?? ?? ?? ????
¡ñ Logback: logback-spring.xml
¡ñ Log4J2: log4j2-spring.xml
¡ñ JUL (??): logging.properties
¡ñ Logback extension
¡ð ???? <springProfile name=¡±????¡±>
¡ð Environment ???? <springProperty>
??? Log4j2? ????
¡ñ https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#ho
wto-configure-log4j-for-logging
26. ???
??? ?? spring-boot-starter-test? ???? ? ??
¡ñ test ???? ??.
@SpringBootTest
¡ñ @RunWith(SpringRunner.class)? ?? ?? ?.
¡ñ ? ?? ??? ??? ????? ??? ????. (@SpringBootApplication)
¡ñ webEnvironment
¡ð MOCK: mock servlet environment. ?? ?? ?? ? ?.
¡ð RANDON_PORT, DEFINED_PORT: ?? ?? ?? ?.
¡ð NONE: ??? ?? ?? ? ?.
@MockBean
¡ñ ApplicationContext? ???? ?? Mock?? ?? ??? ?? ?.
¡ñ ?? @Test ?? ???? ??.
???? ???
¡ñ ??? ?? ??? ????? ?? ?
¡ñ @JsonTest
¡ñ @WebMvcTest
¡ñ @WebFluxTest
¡ñ @DataJpaTest
¡ñ ...
27. ??? ??
?? ??? ?? ??? ??? ????...
¡ñ OutputCapture
¡ñ TestPropertyValues
¡ñ TestRestTemplate
¡ñ ConfigFileApplicationContextInitializer
28. Spring-Boot-Devtools
¡ñ ?? ??? ?? ??? ?? ??.
¡ñ ?????? ?? ??? ?? ? ??? ???? ???.
¡ð ?? ?? ??? (cold starts)?? ???. ??
¡ð ??? ??? ???. (JRebel ??? ??)
¡ð ???? ?? ?? ?? ????? spring.devtools.restart.exclude
¡ð ???? ?? ???? spring.devtools.restart.enabled = false
¡ñ ??? ???? ???? ?? ? ???? ?? ???? ?? ??
¡ð ???? ???? ???? ?.
¡ð ??? ??? ?? ???? spring.devtools.liveload.enabled = false
¡ñ ??? ??
¡ð ~/.spring-boot-devtools.properties
¡ñ ??? ??????
29. ??? ? MVC 1?: ??
¡ñ ??? ? MVC
¡ð https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference
/web.html#spring-web
¡ñ ??? ?? MVC
¡ð ?? ???? ???? ?? ?? ?? (??? ??? ??)
¡ñ ??? MVC ??
¡ð @Configuration + WebMvcConfigurer
¡ñ ??? MVC ???
¡ð @Configuration + @EnableWebMvc
30. ??? ? MVC 2?: HttpMessageConverters
https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.html#mv
c-config-message-converters
HTTP ?? ??? ??? ?????, ??? HTTP ?? ???? ??? ? ??.
{¡°username¡±:¡±keesun¡±, ¡°password¡±:¡±123¡±} <-> User
¡ñ @ReuqestBody
¡ñ @ResponseBody
31. ??? ? MVC 3?: ViewResolver
??? ??
¡ñ ? ??? ?? ??
¡ñ HttpMessageConvertersAutoConfiguration
XML ??? ??? ????
<dependency>
<groupId>?com.fasterxml.jackson.dataformat?</groupId>
<artifactId>?jackson-dataformat-xml?</artifactId>
<version>?2.9.6?</version>
</dependency>
32. ??? ? MVC 4?: ?? ??? ??
?? ??? ?? ¡°?/**?¡±
¡ñ ?? ??? ??
¡ð classpath:/static
¡ð classpath:/public
¡ð classpath:/resources/
¡ð classpath:/META-INF/resources
¡ð ?) ¡°/hello.html¡± => /static/hello.html
¡ð spring.mvc.static-path-pattern: ?? ?? ?? ??
¡ð spring.mvc.static-locations: ??? ?? ?? ?? ??
¡ñ Last-Modified ??? ?? 304 ??? ??.
¡ñ ResourceHttpRequestHandler? ???.
¡ð WebMvcConfigurer? addRersourceHandlers? ?????? ? ? ??
@Override
public void ?addResourceHandlers?(ResourceHandlerRegistry registry) {
registry.addResourceHandler(?"/m/**"?)
.addResourceLocations(?"classpath:/m/"?)
.setCachePeriod(?20?)?;
}
33. ??? ? MVC 5?: ?JAR
?JAR ?? ¡°?/webjars/**?¡±
¡ñ ?? ???? ?????
¡ð webjars-locator-core ??? ??
<script ?src=/slideshow/ss-108533045/108533045?"/webjars/jquery/dist/jquery.min.js"?></script>
<script>
?$?(?function?() {
console.?log?(?"ready!"?)?;
?})?;
</script>
34. ??? ? MVC 6?: index ???? ???
?? ???
¡ñ index.html ?? ?? ??? ??.
¡ñ index.??? ?? ?? ??? ??.
¡ñ ? ? ??? ?? ???.
???
¡ñ favicon1.ico
¡ñ ??? ??? ?https://favicon.io/
¡ñ ???? ? ?? ??
¡ð https://stackoverflow.com/questions/2208933/how-do-i-force-a-favicon-refresh
35. ??? ? MVC 7?: Thymeleaf
??? ??? ?? ??? ???? ??? ??
¡ñ FreeMarker
¡ñ Groovy
¡ñ Thymeleaf
¡ñ Mustache
JSP? ???? ?? ??
¡ñ JAR ??? ? ?? ???? ??, WAR ??? ?? ?.
¡ñ Undertow? JSP? ???? ??.
¡ñ https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-js
p-limitations
Thymeleaf ????
¡ñ https://www.thymeleaf.org/
¡ñ https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html
¡ñ ??? ??: spring-boot-starter-thymeleaf
¡ñ ??? ?? ??: /src/main/resources/?template/
¡ñ ??:
https://github.com/thymeleaf/thymeleafexamples-stsm/blob/3.0-master/src/main/weba
pp/WEB-INF/templates/seedstartermng.html
36. ??? ? MVC 8?: HtmlUnit
HTML ??? ? ???? ?? ????? ??.
¡ñ http://htmlunit.sourceforge.net/
¡ñ http://htmlunit.sourceforge.net/gettingStarted.html
¡ñ ??? ??
<dependency>
<groupId>?org.seleniumhq.selenium?</groupId>
<artifactId>?htmlunit-driver?</artifactId>
<scope>?test?</scope>
</dependency>
<dependency>
<groupId>?net.sourceforge.htmlunit?</groupId>
<artifactId>?htmlunit?</artifactId>
<scope>?test?</scope>
</dependency>
¡ñ @Autowire WebClient
37. ??? ? MVC 9?: ExceptionHandler
??? @MVC ?? ?? ??
¡ñ @ControllerAdvice
¡ñ @ExchangepHandler
??? ??? ???? ?? ?? ???
¡ñ BasicErrorController
¡ð HTML? JSON ?? ??
¡ñ ?????? ??
¡ð ErrorController ??
??? ?? ???
¡ñ ?? ?? ?? ?? ?? ??? ????
¡ñ src/main/resources/static|template/error/
¡ñ 404.html
¡ñ 5xx.html
¡ñ ErrorViewResolver ??
38. ??? ? MVC 10?: Spring HATEOAS
H?ypermedia ?A?s ?T?he ?E?ngine ?O?f ?A?pplication ?S?tate
¡ñ ??: ?? ???? ???? ?? ???? ??????? ????.
¡ñ ?????: ???? ?? ???? ???? ???? ????.
¡ñ ??? ?? ??
¡ð Rel?ation
¡ð H?ypertext ?Ref?erence)
¡ñ spring-boot-starter-hateoas ??? ??
¡ñ https://spring.io/understanding/HATEOAS
¡ñ https://spring.io/guides/gs/rest-hateoas/
¡ñ https://docs.spring.io/spring-hateoas/docs/current/reference/html/
ObjectMapper ??
¡ñ spring.jackson.*
¡ñ Jackson2ObjectMapperBuilder
LinkDiscovers ??
¡ñ ????? ??? ?? ??? Rel ???? ??? ??? ? ?? XPath ??
???
39. ??? ? MVC 11?: CORS
SOP? CORS
¡ñ Single-Origin Policy
¡ñ Cross-Origin Resource Sharing
¡ñ Origin?
¡ð URI ??? (http, https)
¡ð hostname (whiteship.me, localhost)
¡ð ?? (8080, 18080)
??? MVC @CrossOrigin
¡ñ https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.ht
ml#mvc-cors
¡ñ @Controller? @RequestMapping? ?????
¡ñ WebMvcConfigurer ???? ??? ??
40. ??? ??? 1?: ??
SQL DB NoSQL
¡ñ ???? ?????? ??
¡ñ DataSource ??
¡ñ DBCP ??
¡ñ JDBC ????
¡ñ ??? ??? JPA ????
¡ñ jOOQ ????
¡ñ ?????? ???
¡ñ ?????? ?????? ?
????
¡ñ Redis (Key/Value)
¡ñ MongoDB (Document)
¡ñ Neo4J (Graph)
¡ñ Gemfire (IMDG)
¡ñ Solr (Search)
¡ñ Elasticsearch (Search & Analytics)
¡ñ Cassandra
¡ñ Couchbase
¡ñ LDAP
¡ñ InfluxDB
41. ??? ??? 2?: ???? ??????
???? ?-??? ??????
¡ñ H2 (??, ?? ???...)
¡ñ HSQL
¡ñ Derby
Spring-JDBC? ?????? ??? ?? ??? ??? ?? ?? ????.
¡ð DataSource
¡ð JdbcTemplate
?-??? ?????? ?? ?? ?? ???? ??
¡ñ URL: ¡°testdb¡±
¡ñ username: ¡°sa¡±
¡ñ password: ¡°¡±
H2 ?? ???? ??
¡ñ spring-boot-devtools? ?????...
¡ñ spring.h2.console.enabled=true ? ??.
¡ñ /h2-console? ?? (? path? ?? ? ??)
?? ??
¡ñ CREATE TABLE USER (ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY
KEY (id))
¡ñ INSERT INTO USER VALUES (1, ¡®keesun¡¯)
42. ??? ??? 3?: MySQL
???? DBCP
1. HikariCP? (??)
¡ð https://github.com/brettwooldridge/HikariCP#frequently-used
2. Tomcat CP
3. Commons DBCP2
DBCP ??
¡ñ spring.datasource.hikari.*
¡ñ spring.datasource.tomcat.*
¡ñ spring.datasource.dbcp2.*
MySQL ??? ??? ??
<dependency>
<groupId>?mysql?</groupId>
<artifactId>?mysql-connector-java?</artifactId>
</dependency>
MySQL ?? (?? ??)
¡ñ docker run -p 3306:3306 --name ?mysql_boot ?-e MYSQL_ROOT_PASSWORD=?1? -e
MYSQL_DATABASE=?springboot? -e MYSQL_USER=?keesun? -e
MYSQL_PASSWORD=?pass? -d mysql
¡ñ docker exec -i -t mysql_boot bash
¡ñ mysql -u root -p
MySQL? Datasource ??
¡ñ spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useSSL=false
¡ñ spring.datasource.username=keesun
¡ñ spring.datasource.password=pass
MySQL ??? ??
MySQL 5.* ?? ?? ??? ?
?? Sat Jul 21 11:17:59 PDT 2018 WARN: Establishing SSL connection without
server's identity verification is not recommended. ?According to MySQL
5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be
established by default if explicit option isn't set.? For compliance with
existing applications not using SSL the ?verifyServerCertificate property is
set to 'false'?. You need either to explicitly disable SSL by setting
useSSL=false?, or set ?useSSL=true and provide truststore? for server
certificate verification.
?? jdbc:mysql:/localhost:3306/springboot??useSSL=false
MySQL 8.* ?? ?? ??? ?
?? com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
: Public Key Retrieval is not allowed
?? jdbc:mysql:/localhost:3306/springboot?useSSL=false&?allowPublicKeyRetr
ieval=true
MySQL ???? (GPL) ??
¡ñ MySQL ?? MariaDB ?? ??
¡ñ ?? ?? ?? ?? ?? ??
43. ??? ??? 4?: PostgreSQL
??? ??
<dependency>
<groupId>?org.postgresql?</groupId>
<artifactId>?postgresql?</artifactId>
</dependency>
PostgreSQL ?? ? ?? ?? (docker)
docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e
POSTGRES_USER=keesun -e POSTGRES_DB=springboot --name postgres_boot -d
postgres
docker exec -i -t postgres_boot bash
su - postgres
psql springboot
?????? ??
list
??? ??
dt
??
SELECT * FROM account;
PostgreSQL ?? ???
?? org.postgresql.jdbc.PgConnection.createClob() is not yet implemented
?? spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
44. ??? ??? 5?: ??? ??? JPA
ORM(Object-Relational Mapping)? JPA (Java Persistence API)
¡ñ ??? ????? ??? ? ???? ??? ???? ???? ?????
¡ñ http://hibernate.org/orm/what-is-an-orm/
¡ñ JPA: ORM? ?? ?? (EE) ??
??? ??? JPA
¡ñ Repository ? ?? ??
¡ñ ?? ??? ?? ??
¡ñ @EnableJpaRepositories (??? ??? ???? ?? ??.)
¡ñ SDJ -> JPA -> Hibernate -> Datasource
45. ??? ??? 6?: Spring-Data-JPA ??
??? ??? JPA ??? ??
<dependency>
<groupId>?org.springframework.boot?</groupId>
<artifactId>?spring-boot-starter-data-jpa?</artifactId>
</dependency>
??? ??? JPA ????
¡ñ @Entity ??? ???
¡ñ Repository ???
??? ??? ????? ??? ???
¡ñ H2 DB? ??? ???? ????
¡ñ @DataJpaTest (???? ???) ??
46. ??? ??? 7?: ?????? ???
JPA? ??? ?????? ???
¡ñ spring.jpa.hibernate.ddl-auto
¡ñ spring.jpa.generate-dll=true? ?? ??? ???.
SQL ????? ??? ?????? ???
¡ñ schema.sql ?? schema-${platform}.sql
¡ñ data.sql ?? data-${platform}.sql
¡ñ ${platform} ?? spring.datasource.platform ?? ?? ??.
47. ??? ??? 8?: ?????? ??????
Flyway? Liquibase? ?????, ??? Flyway? ???????.
https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#howto-execute
-flyway-database-migrations-on-startup
??? ??
¡ñ org.flywaydb:flyway-core
?????? ????
¡ñ db/migration ?? db/migration/{vendor}
¡ñ spring.flyway.locations? ?? ??
?????? ?? ??
¡ñ V??__??.sql
¡ñ V? ? ????.
¡ñ ??? ????? (????? ??)
¡ñ ??? ?? ??? ??? ?? ??.
¡ñ ??? ??? ?????.
48. ??? ??? 9?: Redis
??, ??? ???, ?/?? ??? ??? ?? ??.
??? ??
¡ñ spring-boot-starter-data-redis
Redis ?? ? ?? (??)
¡ñ docker run -p 6379:6379 --name redis_boot -d redis
¡ñ docker exec -i -t redis_boot redis-cli
??? ??? Redis
¡ñ https://projects.spring.io/spring-data-redis/
¡ñ StringRedisTemplate ?? RedisTemplate
¡ñ extends CrudRepository
Redis ?? ???
¡ñ https://redis.io/commands
¡ñ keys *
¡ñ get {key}
¡ñ hgetall {key}
¡ñ hget {key} {column}
??????
¡ñ spring.redis.*
49. ??? ??? 10?: MongoDB
MongoDB?? JSON ??? ???? ?????????.
??? ??
¡ñ spring-boot-starter-data-mongodb
MongoDB ?? ? ?? (??)
¡ñ docker run -p 27017:27017 --name mongo_boot -d mongo
¡ñ docker exec -i -t mongo_boot bash
¡ñ mongo
??? ??? ??DB
¡ñ MongoTemplate
¡ñ MongoRepository
¡ñ ??? MongoDB (????)
¡ð de.flapdoodle.embed:de.flapdoodle.embed.mongo
¡ñ @DataMongoTest
50. ??? ??? 11?: Neo4j
Neo4j?? ???? ?? ??? ?????? ??? ??? ?????? ???.
??? ??
¡ñ spring-boot-starter-data-neo4j
Neo4j ?? ? ?? (??)
¡ñ docker run -p 7474:7474 -p 7687:7687 -d --name noe4j_boot neo4j
¡ñ http://localhost:7474/browser
??? ??? Neo4J
¡ñ Neo4jTemplate (Deprecated)
¡ñ SessionFactory
¡ñ Neo4jRepository
51. ??? ??? 12?: ??
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-featur
es-sql
52. ??? ???? 1?: spring-boot-starter-security
??? ????
¡ñ ? ????
¡ñ ??? ????
¡ñ ??? ?? ?? ??
¡ð LDAP, ? ??, Basic ??, OAuth, ...
??? ?? ???? ?? ??
¡ñ SecurityAutoConfiguration
¡ñ UserDetailsServiceAutoConfiguration
¡ñ spring-boot-starter-security
¡ð ??? ???? 5.* ??? ??
¡ñ ?? ??? ??? ???.
¡ñ ?? ??? ??
¡ð Username: user
¡ð Password: ??????? ??? ? ?? ?? ? ?? (??? ?? ?.)
¡ð spring.security.user.name
¡ð spring.security.user.password
¡ñ ?? ?? ?? ??? ??
¡ð DefaultAuthenticationEventPublisher ? ??
¡ð ??? ?? ?? ??? ?? ??
??? ?? ???? ???
¡ñ https://docs.spring.io/spring-security/site/docs/current/reference/html/test-method.htm
l
53. ??? ???? 2?: ???? ?? ??????
1. ? ???? ??
@Configuration
public class ?WebSecurityConfig ?extends ?WebSecurityConfigurerAdapter
{
?@Override
?protected void ?configure?(HttpSecurity http) ?throws ?Exception {
http.authorizeRequests()
.antMatchers(?"/"?, ?"/hello"?).permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic()?;
?}
}
2. UserDetailsServie ??
https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#jc-authentication
-userdetailsservice
3. PasswordEncoder ?? ? ??
https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#core-services-pa
ssword-encoding
54. ??? REST ????? 1?: RestTemplate? WebClient
RestTemplate
¡ñ Blocking I/O ??? Synchronous API
¡ñ RestTemplateAutoConfiguration
¡ñ ????? spring-web ??? ??? RestTemplate?Builder?? ??? ??? ???.
¡ñ https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html
#rest-client-access
WebClient
¡ñ Non-Blocking I/O ??? Asynchronous API
¡ñ WebClientAutoConfiguration
¡ñ ????? spring-webflux ??? ??? WebClient.?Builder?? ??? ???
???.
¡ñ https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.ht
ml#webflux-client
55. ??? REST ????? 2?: ??????
RestTemplate
¡ñ ???? java.net.HttpURLConnection ??.
¡ñ ??????
¡ð ?? ??????
¡ð ??? ??????
¡ö RestTemplateCustomizer
¡ö ? ???
WebClient
¡ñ ???? Reactor Netty? HTTP ????? ??.
¡ñ ??????
¡ð ?? ??????
¡ð ??? ??????
¡ö WebClientCustomizer
¡ö ? ???
56. ??? ??? ?? ??
¡ñ ??
¡ñ ???
¡ñ Validation
¡ñ ??? ??
¡ñ JTA
¡ñ ??? ??????
¡ñ ??? ??
¡ñ JMX
¡ñ ???
¡ñ ???
¡ñ ...
5?: ??? ?? ??
??? ??? ?????? ?? ???? ??? ??? ?????. ??? ???
???? ?????? ???? ??? ? ???? ???? ???? ??? ??
?????.
57. ??? ?? Actuator 1?: ??
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-endpo
ints
??? ??
¡ñ spring-boot-starter-actuator
??????? ?? ??? ??? ? ?? Endpoints
¡ñ ??? Endpoints ??.
¡ñ JMX ?? HTTP? ?? ?? ?? ?.
¡ñ shutdown? ??? ?? Endpoint? ????? ????? ??.
¡ñ ??? ?? ??
¡ð management.endpoints.enabled-by-default=false
¡ð management.endpoint.info.enabled=true
58. ??? ?? Actuator 2?: JMX? HTTP
JConsole ????
¡ñ https://docs.oracle.com/javase/tutorial/jmx/mbeans/
¡ñ https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html
VisualVM ????
¡ñ https://visualvm.github.io/download.html
HTTP ????
¡ñ /actuator
¡ñ health? info? ??? ???? Endpoint? ????? ????? ??
¡ñ ?? ?? ??
¡ð management.endpoints.web.exposure.include=*
¡ð management.endpoints.web.exposure.exclude=env,beans
59. ??? ?? Actuator 3?: Spring-Boot-Admin
https://github.com/codecentric/spring-boot-admin
??? ?? Actuator UI ??
??? ?? ??
<dependency>
?<groupId>?de.codecentric?</groupId>
?<artifactId>?spring-boot-admin-starter-server?</artifactId>
?<version>?2.0.1?</version>
</dependency>
@EnableAdminServer
????? ??
<dependency>
?<groupId>?de.codecentric?</groupId>
?<artifactId>?spring-boot-admin-starter-client?</artifactId>
?<version>?2.0.1?</version>
</dependency>
spring.boot.admin.client.url?=?http://localhost:8080
management.endpoints.web.exposure.include?=?*
6?: ???
60. ??? ?? ???
??? ?? ??
¡ñ ??? ??
¡ñ ?? ??
¡ñ ?? ? ??
¡ñ JAR ???
??? ?? ??
¡ñ ??? ?? ?? ??
¡ñ ??? ?? ??
??? ?? ??
¡ñ Actuator
¡ñ ??? ?? ???
?? ?? ? ??????.
?? & ?? ??? ?? ?? ??????.
?????.

More Related Content

???? ??? ??

  • 1. ???? ??? ?? ??? ?? (?https://spring.io/projects/spring-boot?) ????? ??? ?????? ? ??? ?? ??? ? ?? ???? ????. ? ??? ??? ??? ?? ??? ?? ???? ????? ??? ? ?? ??? ?????. ?? ?? ¡ñ ??? ??? ?? ??? ?????. ¡ñ ??? ??? ???? ?? ??? ??? ? ????. ¡ñ ??? ??? ???? ? ??????? ??? ? ????. ¡ñ ??? ??? ???? ?? ??? ??? ???? ??????? ??? ? ????. ¡ñ ??? ?? ??????? ?? ??? ???? ???? ? ? ????. ?? ??? ?? ???? ??? ??? ??? ?? ??? ?? ??? ? ????. ¡ñ ??? ?? ?? ¡ð ??? ?? ¡ð ?? ?? ¡ð ?? ? ?? ¡ð ????? ?? ??? JAR ¡ñ ??? ?? ?? ¡ð ??? ?? ?? ?? ¡ö SpringApplication ¡ö ?? ?? ¡ö ?? ¡ö ??? ¡ö Spring-Boot-Devtools ¡ð ?? ?? ?? ¡ö ??? ? MVC ¡ö ??? ??? ¡ö ??? ???? ¡ö REST ????? ¡ñ ??? ?? ?? ¡ð ????? ¡ð ???? ¡ð ????
  • 2. 1?: ?? 1. ?? ?? ? ??? ?? 2. ?? ?? ??? ¡ñ ?? ??????? ?? ??? ?? ?. (???? ???? ????? ?? ????.) ¡ñ 2007??? ???? ???? ?? ? ?? 10?? ?? ????. ¡ñ ??, ??? ?????, JPA, ??????? ?? ???? ??? ????. ¡ñ Youtube/??? ???? ?? ?? ??? ???? ???? ????. ¡ñ (???? Whiteship.me ?? ???? ?? ?? ???? ??? ? ???.) ¡ñ (? ???? ?? ?? ??? ?? ??? ?? ???? ???.. ??? ????.) 2?: ??? ?? ???? ???? ??? ?? ? ??? ??? ??? ???? ??? ?? ?????? ??? ??? ?????. 3. ??? ?? ?? https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#getting-started -introducing-spring-boot 4. ??? ?? ???? https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#getting-started -maven-installation 5. ??? ?? ???? ??? https://start.spring.io/
  • 3. 6. ??? ?? ???? ?? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-structuring-y our-code ??? ?? ???? ??? ?? ¡ñ ?? ?? (srcmainjava) ¡ñ ?? ??? (srcmainresource) ¡ñ ??? ?? (srctestjava) ¡ñ ??? ??? (srctestresource) ?? ?????? ?? ¡ñ ?? ??? 3?: ??? ?? ?? 2???? ??? ??? ?? ??? ?????. ??? ??? ???? ¡®??? ??', ¡®?? ??' ??? ¡®?? ??? ????'? ?? ?????. 7. ??? ?? ?? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-dependency -management 8. ??? ?? ?? ¡ñ ?? ?? ??? ??? ?? ¡ñ ?? ?? ???? ??? ?? ¡ñ ?? ??? ?? ???? ¡ñ https://mvnrepository.com/ 9. ?? ?? ?? ¡ñ @EnableAutoConfiguration (@SpringBootApplication ?? ?? ??) ¡ñ ?? ?? ? ??? ??? ?? ¡ð 1??: @ComponentScan ¡ð 2??: @EnableAutoConfiguration ¡ñ @ComponentScan ¡ð @Component ¡ð @Configuration @Repository @Service @Controller @RestController
  • 4. ¡ñ @EnableAutoConfiguration ¡ð spring.factories ¡ö org.springframework.boot.autoconfigure.EnableAutoConfigu ration ¡ð @Configuration ¡ð @ConditionalOnXxxYyyZzz 10. ?? ?? ??? 1?: Starter? Autoconfigure https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-developin g-auto-configuration ¡ñ Xxx-Spring-Boot-Autoconfigure ??: ?? ?? ¡ñ Xxx-Spring-Boot-Starter ??: ??? ??? ?? ¡ñ ?? ??? ??? ?? ??? ¡ð Xxx-Spring-Boot-Starter ¡ñ ?? ?? 1. ??? ?? <dependencies> <dependency> <groupId>?org.springframework.boot?</groupId> <artifactId>?spring-boot-autoconfigure?</artifactId> </dependency> <dependency> <groupId>?org.springframework.boot?</groupId> <artifactId>?spring-boot-autoconfigure-processor?</artifactId> <optional>?true?</optional> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>?org.springframework.boot?</groupId> <artifactId>?spring-boot-dependencies?</artifactId> <version>?2.0.3.RELEASE?</version> <type>?pom?</type> <scope>?import?</scope> </dependency> </dependencies> </dependencyManagement> 2. @Configuration ?? ?? 3. src/main/resource/META-INF? spring.factories ?? ??? 4. spring.factories ?? ?? ?? ?? ?? org.springframework.boot.autoconfigure.EnableAutoConfiguration= FQCN, FQCN 5. mvn install
  • 5. 11. ?? ?? ??? 2?: @ConfigurationProperties ¡ñ ???? ???? ¡ð @ConditionalOnMissingBean ¡ñ ? ??? ?? ?? ¡ð @ConfigurationProperties(¡°holoman¡±) ¡ð @EnableConfigurationProperties(HolomanProperties) ¡ð ???? ?? ?? ?? <dependency> <groupId>?org.springframework.boot?</groupId> <artifactId>?spring-boot-configuration-processor?</artifactId> <optional>?true?</optional> </dependency> 12. ?? ? ?? ?? ¡ñ ??? ??? ??? ???. ¡ð ?? ?? ?? ¡ð ?? ?? ¡ð ??? ???? ?? ¡ð ??? ??? ¡ð ??? ??? ?? ¡ð ????? ??? ?? ¡ð ?? ?? ? ?? ¡ñ ? ?? ??? ?? ??? ? ???? ???? ?????? ?? ??? ??? ?? ??. ¡ð ServletWebServerFactoryAutoConfiguration (??? ? ?? ??) ¡ö TomcatServletWebServerFactoryCustomizer (?? ??????) ¡ð DispatcherServletAutoConfiguration ¡ö ??? ??? ?? 13. ?? ? ?? ?? 1?: ????? ?? ?? https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers. html ¡ñ ?? ??? ????? ?? ¡ñ ? ?? ?? ?? ?? ¡ñ ?? ¡ð server.port ¡ð ?? ??
  • 6. ¡ð ApplicationListner<ServletWebServerInitializedEvent> 14. ?? ? ?? ?? 2?: HTTPS? HTTP2 https://opentutorials.org/course/228/4894 https://gist.github.com/keesun/f93f0b83d7232137283450e08a53c4fd ¡ñ HTTPS ???? ¡ð ???? ??? ¡ð HTTP? ???? ¡ñ HTTP ???? ???? ???? ¡ð https://github.com/spring-projects/spring-boot/tree/v2.0.3.RELEASE/spring-bo ot-samples/spring-boot-sample-tomcat-multi-connectors ¡ñ HTTP2 ?? ¡ð server.http2.enable ¡ð ???? ??? ???? ?? ??. 15. ?? HTTP2 ¡ñ JDK9? Tomcat 9+ ?? ¡ñ ? ??? ?? ?? ?? https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers. html#howto-configure-http2-tomcat 16. ????? ?? ??? JAR https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html ¡°??? ?? JAR ?? ??? ??? ? ???¡± ¡ñ mvn package? ?? ?? ??? ?JAR ?? ¡°???"? ?? ?. ¡ñ spring-maven-plugin? ??? ? (???) ¡ñ ?? ¡°uber¡± jar ? ?? ¡ð ?? ??? (??? ? ??????)? ??? ???? ?? ¡ð ?? ???? ??? ? ?? ?? ¡ö ?? ?????? ????.. ¡ð ??? ???? ??? ?? ??? ? ???? ¡ñ ??? ??? ?? ¡ð ?? JAR : ????? ???? ?? JAR? ???? ????? ??? ???. ¡ð ?????? ???? ????? ?? ?? ¡ð org.springframework.boot.loader.jar.JarFile? ???? ?? JAR? ???. ¡ð org.springframework.boot.loader.Launcher? ???? ????.
  • 7. 17. ??? ?? ?? ?? ¡ñ ??? ?? ¡ð ??? ??? ????? ? ??? ????? ¡ñ ?? ?? ¡ð @EnableAutoConfiguration? ? ???? ???. ¡ñ ?? ? ?? ¡ð ? ??? ??? ??? ??? ?? ??? ???? ??. ¡ñ ????? ?? ??? JAR ¡ð spring-boot-maven ????? ??? ?????.. 4?: ??? ?? ?? 3???? ??? ??? ???? ?? ??? ???? ????? ?????? ?? ??? ?????. 18. ??? ?? ?? ?? ??? ?? ?? ?? ?? ?? ?? ¡ñ SpringApplication ¡ñ ?? ?? ¡ñ ???? ¡ñ ?? ¡ñ ??? ¡ñ Spring-Dev-Tools ¡ñ ??? ? MVC ¡ñ ??? ??? ¡ñ ??? ???? ¡ñ REST API ????? ¡ñ ??? ?? ??? 19. SpringApplication 1? https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-applicatio n.html#boot-features-spring-application ¡ñ ?? ?? ?? INFO ¡ð ?? ?? ??? ??? ??? ?? ¡ñ FailureAnalyzer ¡ñ ?? ¡ð banner.txt | gif | jpg | png ¡ð classpath ?? spring.banner.location ¡ð ${spring-boot.version} ?? ??? ??? ? ??. ¡ð Banner ??? ???? SpringApplication.setBanner()? ?? ??.
  • 8. ¡ð ?? ?? ?? ¡ñ SpringApplicationBuilder? ?? ?? ?? ?? 20. SpringApplication 2? https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-applicatio n.html#boot-features-application-events-and-listeners ¡ñ ApplicationEvent ?? ¡ð ApplicationContext? ??? ?? ???? ???? @Bean?? ??? ? ??. ¡ö SpringApplication.addListners() ¡ñ WebApplicationType ?? ¡ñ ?????? ???? ???? ¡ð ApplicationArguments? ??? ??? ??? ??? ?? ?. ¡ñ ?????? ??? ? ?? ???? ?? ? ¡ð ApplicationRunner (??) ?? CommandLineRunner ¡ð ?? ?? ?? @Order 21. ?? ?? 1? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-c onfig ??? ? ?? ?? ?? ¡ñ properties ¡ñ YAML ¡ñ ?? ?? ¡ñ ??? ?? ???? ???? ?? ?? 1. ?? ? ????? ?? spring-boot-dev-tools.properties 2. ???? ?? @TestPropertySource 3. @SpringBootTest ?????? properties ????? 4. ??? ?? ???? 5. SPRING_APPLICATION_JSON (?? ?? ?? ??? ???) ? ???? ???? 6. ServletConfig ???? 7. ServletContext ???? 8. java:comp/env JNDI ????? 9. System.getProperties() ?? ??? ???? 10. OS ?? ?? 11. RandomValuePropertySource
  • 9. 12. JAR ?? ?? ?? ????? application properties 13. JAR ?? ?? ?? ????? application properties 14. JAR ?? ?? application properties 15. JAR ?? ?? application properties 16. @PropertySource 17. ?? ???? (SpringApplication.setDefaultProperties) application.properties ?? ?? (??? ??? ?? ???.) 1. file:./config/ 2. file:./ 3. classpath:/config/ 4. classpath:/ ??? ???? ¡ñ ${random.*} ???? ?? ¡ñ name = keesun ¡ñ fullName = ${name} baik 22. ?? ?? 2? ??-??? ???? @ConfigurationProperties ¡ñ ?? ????? ??? ??? ? ?? ¡ñ ??? ???? ?? ?? ??? ? ?? ¡ð @EnableConfigurationProperties ¡ð @Component ¡ð @Bean ¡ñ ??? ?? ??? ¡ð context-path (??) ¡ð context_path (?????) ¡ð contextPath (??) ¡ð CONTEXTPATH ¡ñ ???? ?? ??? ¡ð @DurationUnit ¡ñ ???? ? ?? ¡ð @Validated ¡ð JSR-303 (@NotNull, ...) ¡ñ ?? ?? ?? ¡ñ @Value ¡ð SpEL ? ??? ? ???... ¡ð ?? ?? ???? ?? ?? ????.
  • 10. 23. ???? @Profile ?????? ???? ¡ñ @Configuration ¡ñ @Component ?? ????? ??? ? ???? ¡ñ spring.profiles.active ?? ????? ??? ???? ¡ñ spring.profiles.include ????? ???? ¡ñ application-{profile}.properties 24. ?? 1?: ??? ?? ?? ?? ?? ?? ??? VS ?? ¡ñ Commons Logging?, SLF4j ¡ñ JUL, Log4J2, ?Logback ??? 5? ?? ?? ?? ?? ¡ñ https://docs.spring.io/spring/docs/5.0.0.RC3/spring-framework-reference/overview.ht ml#overview-logging ¡ñ Spring-JCL ¡ð Commons Logging -> SLF4j or Log4j2 ¡ð pom.xml? exclusion ??? ?. ??? ?? ?? ¡ñ ?? ?? ¡ñ --debug (?? ?? ?????? ??? ???) ¡ñ --trace (?? ? ??? ???) ¡ñ ?? ??: spring.output.ansi.enabled ¡ñ ?? ??: logging.file ?? logging.path ¡ñ ?? ?? ??: logging.level.??? = ?? ?? 25. ?? 2?: ?????? https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html ??? ?? ?? ?? ???? ¡ñ Logback: logback-spring.xml ¡ñ Log4J2: log4j2-spring.xml ¡ñ JUL (??): logging.properties ¡ñ Logback extension ¡ð ???? <springProfile name=¡±????¡±>
  • 11. ¡ð Environment ???? <springProperty> ??? Log4j2? ???? ¡ñ https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#ho wto-configure-log4j-for-logging
  • 12. 26. ??? ??? ?? spring-boot-starter-test? ???? ? ?? ¡ñ test ???? ??. @SpringBootTest ¡ñ @RunWith(SpringRunner.class)? ?? ?? ?. ¡ñ ? ?? ??? ??? ????? ??? ????. (@SpringBootApplication) ¡ñ webEnvironment ¡ð MOCK: mock servlet environment. ?? ?? ?? ? ?. ¡ð RANDON_PORT, DEFINED_PORT: ?? ?? ?? ?. ¡ð NONE: ??? ?? ?? ? ?. @MockBean ¡ñ ApplicationContext? ???? ?? Mock?? ?? ??? ?? ?. ¡ñ ?? @Test ?? ???? ??. ???? ??? ¡ñ ??? ?? ??? ????? ?? ? ¡ñ @JsonTest ¡ñ @WebMvcTest ¡ñ @WebFluxTest ¡ñ @DataJpaTest ¡ñ ... 27. ??? ?? ?? ??? ?? ??? ??? ????... ¡ñ OutputCapture ¡ñ TestPropertyValues ¡ñ TestRestTemplate ¡ñ ConfigFileApplicationContextInitializer 28. Spring-Boot-Devtools ¡ñ ?? ??? ?? ??? ?? ??. ¡ñ ?????? ?? ??? ?? ? ??? ???? ???. ¡ð ?? ?? ??? (cold starts)?? ???. ?? ¡ð ??? ??? ???. (JRebel ??? ??) ¡ð ???? ?? ?? ?? ????? spring.devtools.restart.exclude ¡ð ???? ?? ???? spring.devtools.restart.enabled = false ¡ñ ??? ???? ???? ?? ? ???? ?? ???? ?? ??
  • 13. ¡ð ???? ???? ???? ?. ¡ð ??? ??? ?? ???? spring.devtools.liveload.enabled = false ¡ñ ??? ?? ¡ð ~/.spring-boot-devtools.properties ¡ñ ??? ?????? 29. ??? ? MVC 1?: ?? ¡ñ ??? ? MVC ¡ð https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference /web.html#spring-web ¡ñ ??? ?? MVC ¡ð ?? ???? ???? ?? ?? ?? (??? ??? ??) ¡ñ ??? MVC ?? ¡ð @Configuration + WebMvcConfigurer ¡ñ ??? MVC ??? ¡ð @Configuration + @EnableWebMvc 30. ??? ? MVC 2?: HttpMessageConverters https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.html#mv c-config-message-converters HTTP ?? ??? ??? ?????, ??? HTTP ?? ???? ??? ? ??. {¡°username¡±:¡±keesun¡±, ¡°password¡±:¡±123¡±} <-> User ¡ñ @ReuqestBody ¡ñ @ResponseBody 31. ??? ? MVC 3?: ViewResolver ??? ?? ¡ñ ? ??? ?? ?? ¡ñ HttpMessageConvertersAutoConfiguration XML ??? ??? ???? <dependency> <groupId>?com.fasterxml.jackson.dataformat?</groupId> <artifactId>?jackson-dataformat-xml?</artifactId> <version>?2.9.6?</version> </dependency>
  • 14. 32. ??? ? MVC 4?: ?? ??? ?? ?? ??? ?? ¡°?/**?¡± ¡ñ ?? ??? ?? ¡ð classpath:/static ¡ð classpath:/public ¡ð classpath:/resources/ ¡ð classpath:/META-INF/resources ¡ð ?) ¡°/hello.html¡± => /static/hello.html ¡ð spring.mvc.static-path-pattern: ?? ?? ?? ?? ¡ð spring.mvc.static-locations: ??? ?? ?? ?? ?? ¡ñ Last-Modified ??? ?? 304 ??? ??. ¡ñ ResourceHttpRequestHandler? ???. ¡ð WebMvcConfigurer? addRersourceHandlers? ?????? ? ? ?? @Override public void ?addResourceHandlers?(ResourceHandlerRegistry registry) { registry.addResourceHandler(?"/m/**"?) .addResourceLocations(?"classpath:/m/"?) .setCachePeriod(?20?)?; } 33. ??? ? MVC 5?: ?JAR ?JAR ?? ¡°?/webjars/**?¡± ¡ñ ?? ???? ????? ¡ð webjars-locator-core ??? ?? <script ?src=/slideshow/ss-108533045/108533045?"/webjars/jquery/dist/jquery.min.js"?></script> <script> ?$?(?function?() { console.?log?(?"ready!"?)?; ?})?; </script> 34. ??? ? MVC 6?: index ???? ??? ?? ??? ¡ñ index.html ?? ?? ??? ??. ¡ñ index.??? ?? ?? ??? ??. ¡ñ ? ? ??? ?? ???. ??? ¡ñ favicon1.ico ¡ñ ??? ??? ?https://favicon.io/ ¡ñ ???? ? ?? ?? ¡ð https://stackoverflow.com/questions/2208933/how-do-i-force-a-favicon-refresh
  • 15. 35. ??? ? MVC 7?: Thymeleaf ??? ??? ?? ??? ???? ??? ?? ¡ñ FreeMarker ¡ñ Groovy ¡ñ Thymeleaf ¡ñ Mustache JSP? ???? ?? ?? ¡ñ JAR ??? ? ?? ???? ??, WAR ??? ?? ?. ¡ñ Undertow? JSP? ???? ??. ¡ñ https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-js p-limitations Thymeleaf ???? ¡ñ https://www.thymeleaf.org/ ¡ñ https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html ¡ñ ??? ??: spring-boot-starter-thymeleaf ¡ñ ??? ?? ??: /src/main/resources/?template/ ¡ñ ??: https://github.com/thymeleaf/thymeleafexamples-stsm/blob/3.0-master/src/main/weba pp/WEB-INF/templates/seedstartermng.html 36. ??? ? MVC 8?: HtmlUnit HTML ??? ? ???? ?? ????? ??. ¡ñ http://htmlunit.sourceforge.net/ ¡ñ http://htmlunit.sourceforge.net/gettingStarted.html ¡ñ ??? ?? <dependency> <groupId>?org.seleniumhq.selenium?</groupId> <artifactId>?htmlunit-driver?</artifactId> <scope>?test?</scope> </dependency> <dependency> <groupId>?net.sourceforge.htmlunit?</groupId> <artifactId>?htmlunit?</artifactId> <scope>?test?</scope> </dependency> ¡ñ @Autowire WebClient
  • 16. 37. ??? ? MVC 9?: ExceptionHandler ??? @MVC ?? ?? ?? ¡ñ @ControllerAdvice ¡ñ @ExchangepHandler ??? ??? ???? ?? ?? ??? ¡ñ BasicErrorController ¡ð HTML? JSON ?? ?? ¡ñ ?????? ?? ¡ð ErrorController ?? ??? ?? ??? ¡ñ ?? ?? ?? ?? ?? ??? ???? ¡ñ src/main/resources/static|template/error/ ¡ñ 404.html ¡ñ 5xx.html ¡ñ ErrorViewResolver ?? 38. ??? ? MVC 10?: Spring HATEOAS H?ypermedia ?A?s ?T?he ?E?ngine ?O?f ?A?pplication ?S?tate ¡ñ ??: ?? ???? ???? ?? ???? ??????? ????. ¡ñ ?????: ???? ?? ???? ???? ???? ????. ¡ñ ??? ?? ?? ¡ð Rel?ation ¡ð H?ypertext ?Ref?erence) ¡ñ spring-boot-starter-hateoas ??? ?? ¡ñ https://spring.io/understanding/HATEOAS ¡ñ https://spring.io/guides/gs/rest-hateoas/ ¡ñ https://docs.spring.io/spring-hateoas/docs/current/reference/html/ ObjectMapper ?? ¡ñ spring.jackson.* ¡ñ Jackson2ObjectMapperBuilder LinkDiscovers ?? ¡ñ ????? ??? ?? ??? Rel ???? ??? ??? ? ?? XPath ?? ??? 39. ??? ? MVC 11?: CORS
  • 17. SOP? CORS ¡ñ Single-Origin Policy ¡ñ Cross-Origin Resource Sharing ¡ñ Origin? ¡ð URI ??? (http, https) ¡ð hostname (whiteship.me, localhost) ¡ð ?? (8080, 18080) ??? MVC @CrossOrigin ¡ñ https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.ht ml#mvc-cors ¡ñ @Controller? @RequestMapping? ????? ¡ñ WebMvcConfigurer ???? ??? ?? 40. ??? ??? 1?: ?? SQL DB NoSQL ¡ñ ???? ?????? ?? ¡ñ DataSource ?? ¡ñ DBCP ?? ¡ñ JDBC ???? ¡ñ ??? ??? JPA ???? ¡ñ jOOQ ???? ¡ñ ?????? ??? ¡ñ ?????? ?????? ? ???? ¡ñ Redis (Key/Value) ¡ñ MongoDB (Document) ¡ñ Neo4J (Graph) ¡ñ Gemfire (IMDG) ¡ñ Solr (Search) ¡ñ Elasticsearch (Search & Analytics) ¡ñ Cassandra ¡ñ Couchbase ¡ñ LDAP ¡ñ InfluxDB 41. ??? ??? 2?: ???? ?????? ???? ?-??? ?????? ¡ñ H2 (??, ?? ???...) ¡ñ HSQL ¡ñ Derby Spring-JDBC? ?????? ??? ?? ??? ??? ?? ?? ????. ¡ð DataSource ¡ð JdbcTemplate ?-??? ?????? ?? ?? ?? ???? ?? ¡ñ URL: ¡°testdb¡±
  • 18. ¡ñ username: ¡°sa¡± ¡ñ password: ¡°¡± H2 ?? ???? ?? ¡ñ spring-boot-devtools? ?????... ¡ñ spring.h2.console.enabled=true ? ??. ¡ñ /h2-console? ?? (? path? ?? ? ??) ?? ?? ¡ñ CREATE TABLE USER (ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id)) ¡ñ INSERT INTO USER VALUES (1, ¡®keesun¡¯) 42. ??? ??? 3?: MySQL ???? DBCP 1. HikariCP? (??) ¡ð https://github.com/brettwooldridge/HikariCP#frequently-used 2. Tomcat CP 3. Commons DBCP2 DBCP ?? ¡ñ spring.datasource.hikari.* ¡ñ spring.datasource.tomcat.* ¡ñ spring.datasource.dbcp2.* MySQL ??? ??? ?? <dependency> <groupId>?mysql?</groupId> <artifactId>?mysql-connector-java?</artifactId> </dependency> MySQL ?? (?? ??) ¡ñ docker run -p 3306:3306 --name ?mysql_boot ?-e MYSQL_ROOT_PASSWORD=?1? -e MYSQL_DATABASE=?springboot? -e MYSQL_USER=?keesun? -e MYSQL_PASSWORD=?pass? -d mysql ¡ñ docker exec -i -t mysql_boot bash ¡ñ mysql -u root -p MySQL? Datasource ?? ¡ñ spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useSSL=false ¡ñ spring.datasource.username=keesun ¡ñ spring.datasource.password=pass
  • 19. MySQL ??? ?? MySQL 5.* ?? ?? ??? ? ?? Sat Jul 21 11:17:59 PDT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. ?According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.? For compliance with existing applications not using SSL the ?verifyServerCertificate property is set to 'false'?. You need either to explicitly disable SSL by setting useSSL=false?, or set ?useSSL=true and provide truststore? for server certificate verification. ?? jdbc:mysql:/localhost:3306/springboot??useSSL=false MySQL 8.* ?? ?? ??? ? ?? com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : Public Key Retrieval is not allowed ?? jdbc:mysql:/localhost:3306/springboot?useSSL=false&?allowPublicKeyRetr ieval=true MySQL ???? (GPL) ?? ¡ñ MySQL ?? MariaDB ?? ?? ¡ñ ?? ?? ?? ?? ?? ?? 43. ??? ??? 4?: PostgreSQL ??? ?? <dependency> <groupId>?org.postgresql?</groupId> <artifactId>?postgresql?</artifactId> </dependency> PostgreSQL ?? ? ?? ?? (docker) docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=keesun -e POSTGRES_DB=springboot --name postgres_boot -d postgres docker exec -i -t postgres_boot bash
  • 20. su - postgres psql springboot ?????? ?? list ??? ?? dt ?? SELECT * FROM account; PostgreSQL ?? ??? ?? org.postgresql.jdbc.PgConnection.createClob() is not yet implemented ?? spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true 44. ??? ??? 5?: ??? ??? JPA ORM(Object-Relational Mapping)? JPA (Java Persistence API) ¡ñ ??? ????? ??? ? ???? ??? ???? ???? ????? ¡ñ http://hibernate.org/orm/what-is-an-orm/ ¡ñ JPA: ORM? ?? ?? (EE) ?? ??? ??? JPA ¡ñ Repository ? ?? ?? ¡ñ ?? ??? ?? ?? ¡ñ @EnableJpaRepositories (??? ??? ???? ?? ??.) ¡ñ SDJ -> JPA -> Hibernate -> Datasource 45. ??? ??? 6?: Spring-Data-JPA ?? ??? ??? JPA ??? ?? <dependency> <groupId>?org.springframework.boot?</groupId> <artifactId>?spring-boot-starter-data-jpa?</artifactId> </dependency>
  • 21. ??? ??? JPA ???? ¡ñ @Entity ??? ??? ¡ñ Repository ??? ??? ??? ????? ??? ??? ¡ñ H2 DB? ??? ???? ???? ¡ñ @DataJpaTest (???? ???) ?? 46. ??? ??? 7?: ?????? ??? JPA? ??? ?????? ??? ¡ñ spring.jpa.hibernate.ddl-auto ¡ñ spring.jpa.generate-dll=true? ?? ??? ???. SQL ????? ??? ?????? ??? ¡ñ schema.sql ?? schema-${platform}.sql ¡ñ data.sql ?? data-${platform}.sql ¡ñ ${platform} ?? spring.datasource.platform ?? ?? ??. 47. ??? ??? 8?: ?????? ?????? Flyway? Liquibase? ?????, ??? Flyway? ???????. https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#howto-execute -flyway-database-migrations-on-startup ??? ?? ¡ñ org.flywaydb:flyway-core ?????? ???? ¡ñ db/migration ?? db/migration/{vendor} ¡ñ spring.flyway.locations? ?? ?? ?????? ?? ?? ¡ñ V??__??.sql ¡ñ V? ? ????. ¡ñ ??? ????? (????? ??) ¡ñ ??? ?? ??? ??? ?? ??. ¡ñ ??? ??? ?????.
  • 22. 48. ??? ??? 9?: Redis ??, ??? ???, ?/?? ??? ??? ?? ??. ??? ?? ¡ñ spring-boot-starter-data-redis Redis ?? ? ?? (??) ¡ñ docker run -p 6379:6379 --name redis_boot -d redis ¡ñ docker exec -i -t redis_boot redis-cli ??? ??? Redis ¡ñ https://projects.spring.io/spring-data-redis/ ¡ñ StringRedisTemplate ?? RedisTemplate ¡ñ extends CrudRepository Redis ?? ??? ¡ñ https://redis.io/commands ¡ñ keys * ¡ñ get {key} ¡ñ hgetall {key} ¡ñ hget {key} {column} ?????? ¡ñ spring.redis.* 49. ??? ??? 10?: MongoDB MongoDB?? JSON ??? ???? ?????????. ??? ?? ¡ñ spring-boot-starter-data-mongodb MongoDB ?? ? ?? (??) ¡ñ docker run -p 27017:27017 --name mongo_boot -d mongo ¡ñ docker exec -i -t mongo_boot bash ¡ñ mongo ??? ??? ??DB ¡ñ MongoTemplate ¡ñ MongoRepository ¡ñ ??? MongoDB (????) ¡ð de.flapdoodle.embed:de.flapdoodle.embed.mongo
  • 23. ¡ñ @DataMongoTest 50. ??? ??? 11?: Neo4j Neo4j?? ???? ?? ??? ?????? ??? ??? ?????? ???. ??? ?? ¡ñ spring-boot-starter-data-neo4j Neo4j ?? ? ?? (??) ¡ñ docker run -p 7474:7474 -p 7687:7687 -d --name noe4j_boot neo4j ¡ñ http://localhost:7474/browser ??? ??? Neo4J ¡ñ Neo4jTemplate (Deprecated) ¡ñ SessionFactory ¡ñ Neo4jRepository 51. ??? ??? 12?: ?? https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-featur es-sql 52. ??? ???? 1?: spring-boot-starter-security ??? ???? ¡ñ ? ???? ¡ñ ??? ???? ¡ñ ??? ?? ?? ?? ¡ð LDAP, ? ??, Basic ??, OAuth, ... ??? ?? ???? ?? ?? ¡ñ SecurityAutoConfiguration ¡ñ UserDetailsServiceAutoConfiguration ¡ñ spring-boot-starter-security ¡ð ??? ???? 5.* ??? ?? ¡ñ ?? ??? ??? ???. ¡ñ ?? ??? ?? ¡ð Username: user
  • 24. ¡ð Password: ??????? ??? ? ?? ?? ? ?? (??? ?? ?.) ¡ð spring.security.user.name ¡ð spring.security.user.password ¡ñ ?? ?? ?? ??? ?? ¡ð DefaultAuthenticationEventPublisher ? ?? ¡ð ??? ?? ?? ??? ?? ?? ??? ?? ???? ??? ¡ñ https://docs.spring.io/spring-security/site/docs/current/reference/html/test-method.htm l 53. ??? ???? 2?: ???? ?? ?????? 1. ? ???? ?? @Configuration public class ?WebSecurityConfig ?extends ?WebSecurityConfigurerAdapter { ?@Override ?protected void ?configure?(HttpSecurity http) ?throws ?Exception { http.authorizeRequests() .antMatchers(?"/"?, ?"/hello"?).permitAll() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic()?; ?} } 2. UserDetailsServie ?? https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#jc-authentication -userdetailsservice 3. PasswordEncoder ?? ? ?? https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#core-services-pa ssword-encoding 54. ??? REST ????? 1?: RestTemplate? WebClient RestTemplate
  • 25. ¡ñ Blocking I/O ??? Synchronous API ¡ñ RestTemplateAutoConfiguration ¡ñ ????? spring-web ??? ??? RestTemplate?Builder?? ??? ??? ???. ¡ñ https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html #rest-client-access WebClient ¡ñ Non-Blocking I/O ??? Asynchronous API ¡ñ WebClientAutoConfiguration ¡ñ ????? spring-webflux ??? ??? WebClient.?Builder?? ??? ??? ???. ¡ñ https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.ht ml#webflux-client 55. ??? REST ????? 2?: ?????? RestTemplate ¡ñ ???? java.net.HttpURLConnection ??. ¡ñ ?????? ¡ð ?? ?????? ¡ð ??? ?????? ¡ö RestTemplateCustomizer ¡ö ? ??? WebClient ¡ñ ???? Reactor Netty? HTTP ????? ??. ¡ñ ?????? ¡ð ?? ?????? ¡ð ??? ?????? ¡ö WebClientCustomizer ¡ö ? ??? 56. ??? ??? ?? ?? ¡ñ ?? ¡ñ ??? ¡ñ Validation ¡ñ ??? ?? ¡ñ JTA ¡ñ ??? ?????? ¡ñ ??? ?? ¡ñ JMX ¡ñ ???
  • 26. ¡ñ ??? ¡ñ ... 5?: ??? ?? ?? ??? ??? ?????? ?? ???? ??? ??? ?????. ??? ??? ???? ?????? ???? ??? ? ???? ???? ???? ??? ?? ?????. 57. ??? ?? Actuator 1?: ?? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-endpo ints ??? ?? ¡ñ spring-boot-starter-actuator ??????? ?? ??? ??? ? ?? Endpoints ¡ñ ??? Endpoints ??. ¡ñ JMX ?? HTTP? ?? ?? ?? ?. ¡ñ shutdown? ??? ?? Endpoint? ????? ????? ??. ¡ñ ??? ?? ?? ¡ð management.endpoints.enabled-by-default=false ¡ð management.endpoint.info.enabled=true 58. ??? ?? Actuator 2?: JMX? HTTP JConsole ???? ¡ñ https://docs.oracle.com/javase/tutorial/jmx/mbeans/ ¡ñ https://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html VisualVM ???? ¡ñ https://visualvm.github.io/download.html HTTP ???? ¡ñ /actuator ¡ñ health? info? ??? ???? Endpoint? ????? ????? ?? ¡ñ ?? ?? ?? ¡ð management.endpoints.web.exposure.include=* ¡ð management.endpoints.web.exposure.exclude=env,beans
  • 27. 59. ??? ?? Actuator 3?: Spring-Boot-Admin https://github.com/codecentric/spring-boot-admin ??? ?? Actuator UI ?? ??? ?? ?? <dependency> ?<groupId>?de.codecentric?</groupId> ?<artifactId>?spring-boot-admin-starter-server?</artifactId> ?<version>?2.0.1?</version> </dependency> @EnableAdminServer ????? ?? <dependency> ?<groupId>?de.codecentric?</groupId> ?<artifactId>?spring-boot-admin-starter-client?</artifactId> ?<version>?2.0.1?</version> </dependency> spring.boot.admin.client.url?=?http://localhost:8080 management.endpoints.web.exposure.include?=?* 6?: ??? 60. ??? ?? ??? ??? ?? ?? ¡ñ ??? ?? ¡ñ ?? ?? ¡ñ ?? ? ?? ¡ñ JAR ??? ??? ?? ?? ¡ñ ??? ?? ?? ?? ¡ñ ??? ?? ??
  • 28. ??? ?? ?? ¡ñ Actuator ¡ñ ??? ?? ??? ?? ?? ? ??????. ?? & ?? ??? ?? ?? ??????. ?????.