๋ฐ์ํ ์ ์ฒด ๊ธ443 Spring Boot 1.1~1.3 - @SpringBootApplication์ ์ธ์ ์๊ฒผ์๊น 1ํธ์์ ๋ถํธ 1.0์ ์๋ ์ค์ ์ ๋ฐ๋ผ๊ฐ๋ฉด์ ํ ๊ฐ์ง๋ฅผ ์ง์๋ค. ๊ทธ๋๋ ๋ฉ์ธ ํด๋์ค์ ์ด๋ ธํ ์ด์ ์ ์ ๋ฐ๋ก ๋ถ์๋ค๋ ๊ฒ์ด๋ค.// 1.0@Configuration@EnableAutoConfiguration@ComponentScanpublic class SampleSimpleApplication {์ง๊ธ ์ฐ๋ @SpringBootApplication์ ์์๋ค. ๊ทธ๊ฒ ์ธ์ ์ด๋ค ๋ชจ์์ผ๋ก ์๊ฒผ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฌ์ด ๋ถํธ๊ฐ ์ด๋ป๊ฒ ๋ฉ์น๋ฅผ ๋ถ๋ ธ๋์ง๊ฐ ์ด๋ฒ ํธ์ด๋ค.๋ค๋ฃจ๋ ๊ตฌ๊ฐ์ 1.1(2014๋ 6์ 10์ผ), 1.2(2014๋ 12์ 10์ผ), 1.3(2015๋ 11์ 16์ผ) ์ ์ด๋ค. ๋ฆด๋ฆฌ์ฆ ํ๋ฆ 1.1 — ์๋ ์ค์ ์ด ๋ ๋ฐฐ๊ฐ ๋๋ค1.1์ ์ ๊ฐ๋ ์ ๋ค์ด๊ธฐ๋ณด๋ค ๋์์ ๋ํ ๋ฒ์ ์ด๋ค. ์ ์ฅ์์์ spring.f.. 2026. 9. 23. Spring Boot 1.0 - ์์กด์ฑ๋ง ์ถ๊ฐํ๋ฉด ์ค์ ์ด ๋๋ ์ด์ ์คํ๋ง ๋ถํธ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด pom.xml์ ์ด ํ ์ค๋ง ๋ฃ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฌ๋ค. org.springframework.boot spring-boot-starter-webํฐ์บฃ์ ์ค์นํ ์ ๋, web.xml์ ์ด ์ ๋, DispatcherServlet์ ๋ฑ๋กํ ์ ๋ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ค. ์ด๊ฒ ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง๊ฐ ์ด๋ฒ ํธ์ ์ฃผ์ ๋ค.์คํ๋ง ๋ถํธ 1.0์ 2014๋ 4์ 1์ผ์ ๋์๋ค. ์์ ์คํ๋ง ํ๋ ์์ํฌ ์๋ฆฌ์ฆ 7ํธ์์ 4.0์ @Conditional์ ๋ค๋ฃจ๋ฉด์ "์คํ๋ง ๋ถํธ๊ฐ ๊ฐ๋ฅํด์ง ์๋ฆฌ"๋ผ๊ณ ํ๋๋ฐ, ๊ทธ ์๋ฆฌ์ ์ค์ ๋ก ๋ฌด์์ด ์ง์ด์ก๋์ง๋ฅผ ๋ฐ๋ผ๊ฐ ๋ณธ๋ค. ๋จผ์ , 1.0์๋ @SpringBootApplication์ด ์๋ค์ง๊ธ์ ๋ฉ์ธ ํด๋์ค์ ์ด๋ ธํ ์ด์ ํ๋๋ง ๋ถ์ธ๋ค. ๊ทธ๋ฐ๋ฐ.. 2026. 9. 22. Spring 0.9~7.0 - 22๋ ์น ๋ฆด๋ฆฌ์ฆ ํ๋์ ์ ๋ฆฌ ์คํ๋ง ๋ฆด๋ฆฌ์ฆ ๋ ธํธ๋ฅผ 0.9๋ถํฐ 7.0๊น์ง ์ด์ธ ํธ์ ๊ฑธ์ณ ์ ๋ฆฌ๋ฅผ ํ๋ค. ์ด๋ฒ ๊ธ์ ๊ทธ ์ด์ธ ํธ์ ์ ๋ฆฌํ ์๋ฃ๋ค.๋ฒ์ ๋ง๋ค ๋ฌด์์ด ๋ค์ด์๋์ง, ๊ทธ๊ฒ ์ง๊ธ ์ฐ๋ ์คํ๋ง ๋ถํธ์ ์ด๋ ๋ถ๋ถ์ด ๋๋์ง๋ฅผ ์ธ๋๋ณ๋ก ๋ฌถ์ด ์ ๋ฆฌํ๋ค. ๊ฐ ํธ์์ ๋ค๋ฃฌ ๊ทผ๊ฑฐ๋ ์ ๋ถ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ์ ์ค์ ์์ค์๊ณ , ์ฌ๊ธฐ์๋ ๊ฒฐ๋ก ๋ง ์ถ๋ฆฐ๋ค. ๋ฆด๋ฆฌ์ฆ ํ๋ฆ ํ๋์ 1์ธ๋ · 0.9 ~ 1.2 (2003~2005)์์์ ํจํค์ง ์ด๋ฆ๋ถํฐ์๋ค. 0.9์ ํจํค์ง๋ org.springframework๊ฐ ์๋๋ผ com.interface21์ด์๋ค. ๋ก๋ ์กด์จ์ ์ฑ ์ ๋ชฉ์์ ์จ ์ด๋ฆ์ด๋ค.// 0.9com.interface21.beans.factory.BeanFactory// 1.0org.springframework.beans.factory.BeanFactory.. 2026. 9. 22. Spring 7.0 - ์คํ๋ง์ @Nullable์ด JSpecify๋ก ๋์ด๊ฐ ์ด์ ์คํ๋ง 7.0์ผ๋ก ์ฌ๋ฆฌ๋ฉด import ๋ฌธ ํ๋๊ฐ ๋ฐ๋๋ค.// 6.2๊น์งimport org.springframework.lang.Nullable;// 7.0import org.jspecify.annotations.Nullable; 9ํธ์์ 5.0์ด @Nullable์ ๋ง๋ ์ด์ผ๊ธฐ๋ฅผ ํ๋ค. ์ฝํ๋ฆฐ์ด ๋ ๊ฐ๋ฅ์ฑ์ ํ์ ์ผ๋ก ๊ตฌ๋ถํ๋๋ฐ ์๋ฐ๋ก ์ฐ์ธ API์๋ ๊ทธ ์ ๋ณด๊ฐ ์์ด์, ์คํ๋ง์ด ์ง์ ์ด๋ ธํ ์ด์ ์ ๋ฌ์ ์๋ ค์ค ๊ฒ์ด์๋ค. 7.0์ ๊ทธ ์ด๋ ธํ ์ด์ ์ @Deprecated๋ฅผ ๋ถ์๋ค.7.0์ 2025๋ 11์ 13์ผ์ ๋์๋ค. 6.2๊ฐ 2024๋ 11์ 14์ผ์ด์์ผ๋ ๋ฑ 1๋ ๋ง์ด๋ค.์ด๋ฒ ํธ์ด ์ด ์๋ฆฌ์ฆ์ ๋ง์ง๋ง์ด๋ค. 0.9๋ถํฐ ๋ฐ๋ผ์จ ํ๋ฆ์ด ์ด๋์ ๋์ฐฉํ๋์ง ๊ฐ์ด ๋ณด์. ๋ฆด๋ฆฌ์ฆ ํ๋ฆ (7.0) Spring 7.0.. 2026. 9. 21. Spring 6.1~6.2 - ๊ฐ์ ์ค๋ ๋๊ฐ ๋ฐ๊พผ ๊ฒ ์คํ๋ง 6.1์ ์ด๋ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ด์๋ค.Person person = restClient.get() .uri("/persons/{id}", id) .retrieve() .body(Person.class);WebClient์ ๋ชจ์์ด ๊ฑฐ์ ๊ฐ์๋ฐ Mono๋ Flux๋ ์๋ค. ํธ์ถํ๋ฉด ๊ทธ ์๋ฆฌ์์ ๊ฐ์ด ๋์จ๋ค.9ํธ์์ ์คํ๋ง์ด ์ WebFlux๋ฅผ ๋ง๋ค์๋์ง ์ดํด๋ดค๋ค. ๋ฌธ์๊ฐ ์ง์ ๋งํ๊ธฐ๋ฅผ, ๋ ๋นจ๋ผ์ง๋ ค๊ณ ๋ง๋ ๊ฒ ์๋๋ผ ์ ์ ์์ ์ค๋ ๋๋ก ๋ถํ๋ฅผ ๊ฒฌ๋๋ ค๊ณ ๋ง๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค. ๊ทธ ๋ฌธ์ ๊ฐ ์๋ฐ 21์์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก๋ ํ๋ฆฐ๋ค. ๊ฐ์ ์ค๋ ๋๋ค.6.1์ 2023๋ 11์ 16์ผ, 6.2๋ 2024๋ 11์ 14์ผ์ ๋์๋ค. ์ ํํ 1๋ ๊ฐ๊ฒฉ์ด๋ค. ์ด๋ฒ ํธ์ ๋ ๋ฒ์ ์ ๋ฌถ์ด์ .. 2026. 9. 19. Spring 6.0 - AOT๋ ์์ ์ ์ ๋ฌด์์ ๋ฏธ๋ฆฌ ํ๋๊ฐ Spring 6.0์ 5.3 ๋ค์ ๋ฒ์ ์ด๋ค. 5.3์ด 2020๋ 10์์ด์์ผ๋ 2๋ ๋ง์ด๊ณ , GA๋ 2022๋ 11์ 16์ผ์ด๋ค. ์ง๋ ํธ ๋ง์ง๋ง์ ์คํ๋ง์ด ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํ๊ณ ์๋ค๊ณ ํ๋ค. 6.0์์ ๊ทธ๊ฒ ๋์ฐฉํ๋ค.๊ทธ๋ฐ๋ฐ 6.0์ ์ค์ ๋ก ์ฌ๋ ค๋ณธ ์ฌ๋์๊ฒ 6.0์ ์๋ง ๋ค๋ฅธ ๊ธฐ์ต์ผ ๊ฒ์ด๋ค. import ๋ฌธ์ ์ ๋ถ ๊ณ ์น ๊ธฐ์ต...// 5.ximport javax.servlet.http.HttpServletRequest;import javax.persistence.Entity;// 6.0import jakarta.servlet.http.HttpServletRequest;import jakarta.persistence.Entity;์ด๋ฒ ํธ์ ์ด ๋ ๊ฐ์ง๋ฅผ ๋ณธ๋ค. ๋ฐ์์ ๊ฐ์ ๋ ๋ณํ ํ๋์, ์คํ๋ง์ด ์ค.. 2026. 9. 17. Spring 5.0 - ์คํ๋ง์ ์ ์ ์น ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์์๊น ์คํ๋ง ๋ถํธ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋ ์์กด์ฑ ๋ชฉ๋ก์ ๋ณด๋ฉด ์น ํ๋ ์์ํฌ๊ฐ ๋ ๊ฐ๋ค.implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.boot:spring-boot-starter-webflux'ํ๋๋ ์คํ๋ง MVC๊ณ ํ๋๋ WebFlux๋ค. ๋ ๋ค ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค๊ณ @GetMapping์ ๋ถ์ธ๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋ ๊ฐ์ผ๊น. ์ฐ๋ ๊ฒ์ ๊ณ ์น๋ฉด ๋์ง ์์์๊น. Spring 5.0 ๋ ํผ๋ฐ์ค ๋ฌธ์์๋ ๋์ผํ ์ง๋ฌธ์ด ์น์ ์ ๋ชฉ์ผ๋ก ์ฌ๋ผ์ ์๋ค.Why a new web framework?์ด๋ฒ ํธ์ ๊ทธ ๋ต์ ๋ฐ๋ผ๊ฐ ๋ณธ๋ค. 8ํธ์์ ์ดํด๋ณธ 4.3์ 2016๋ 6์์, 5.0์ 2017๋ 9์ 28์ผ.. 2026. 9. 15. Spring 5.1~5.3 - WebFlux์์ ๋ง๋ ๊ฒ์ด ์คํ๋ง MVC๋ก ๋์ด์จ ๊ณผ์ ์คํ๋ง MVC๋ก ๋ง๋ ํ๋ก์ ํธ์์๋ ์ด๋ฐ ์ฝ๋๋ฅผ ์ธ ์ ์๋ค.@Beanpublic RouterFunction routes(PersonHandler handler) { return route() .GET("/person/{id}", accept(APPLICATION_JSON), handler::getPerson) .POST("/person", handler::createPerson) .build();}์ง๋ ํธ์์ 5.0์ ํจ์ํ ๋ผ์ฐํ ์ ์ดํด๋ดค๋ค. ๊ทธ๊ฑด WebFlux ์๊ธฐ์๋ค. ๊ทธ๋ฐ๋ฐ ์ ์ฝ๋๋ WebFlux๊ฐ ์๋๋ผ ์คํ๋ง MVC์์ ๋๋ค. ์๋ธ๋ฆฟ ์์์.์ด๋ฒ ํธ์ 5.1, 5.2, 5.3 ์ธ ๋ฒ์ ์ ๋ฌถ์ด์ ๋ณธ๋ค. 5.0์ฒ๋ผ ์ ๋ชจ๋์ด ์๊ธฐ.. 2026. 9. 14. Spring 4.1~4.3 - @Autowired๋ฅผ ์ง์๋ ๋๋ ์ด์ ์ง๊ธ ์คํ๋ง์ผ๋ก ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ์ง๋ฉด ๋๋ต ์ด๋ฐ ๋ชจ์์ด ๋๋ค.@RestController@RequiredArgsConstructorpublic class UserController { private final UserService userService; @GetMapping("/users/{id}") public UserResponse find(@PathVariable Long id) { return userService.find(id); }}@GetMapping์ ์ฐ๊ณ , ์์ฑ์์ @Autowired๋ฅผ ๋ถ์ด์ง ์๋๋ค. ๋ ๋ค ๋๋ฌด ๋น์ฐํด์ ์ธ์ ๋ถํฐ ๊ทธ๋ฌ๋์ง ์๊ฐํด๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค.์ด ๋ ๊ฐ์ง๊ฐ ์ธ์ ๋ค์ด์๋์ง ์ฐพ์๋ณด๋ฉด ๊ณต๊ต๋กญ๊ฒ๋ ๊ฐ์ ๋ฒ์ ์ด๋ค. 2016๋ 6์์ .. 2026. 9. 12. Spring 4.0 - ์คํ๋ง ๋ถํธ๋ ์ฌ๊ธฐ์ ๊ฐ๋ฅํด์ก๋ค ์ง๋ ํธ๊น์ง ์ค๋ฉด์ ์คํ๋ง์ด XML์ ๊ฑท์ด๋ด๊ณ ์๋ฐ ์ค์ ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ ๊ณผ์ ์ ์ดํด๋ดค๋ค. 3.0์์ @Configuration์ด ๋์๊ณ , 3.1์์ @Enable๋ก XML ๋ค์์คํ์ด์ค๋ฅผ ๋์ฒดํ๋ค.๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ๊น์ง๋ง์ผ๋ก๋ ์คํ๋ง ๋ถํธ๊ฐ ๋์ฌ ์ ์๋ค. ๋ถํธ์ ํต์ฌ์ "ํด๋์คํจ์ค์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉด ์ด ์ค์ ์ ์๋์ผ๋ก ์ผ ๋ค"์ธ๋ฐ, ๊ทธ ํ๋จ์ ํ ์๋จ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค.๊ทธ ์๋จ์ด 4.0์์ ๋ค์ด์จ๋ค. ์ด๋ฒ ํธ์ ๊ทธ ์ด์ผ๊ธฐ๋ถํฐ ์์ํด๋ณด์. ์ฐธ๊ณ ๋ก ์ด๋ฒ ํธ๋ถํฐ ์๋ฃ ์กฐ์ฌ ๋ฐฉ์์ด ์กฐ๊ธ ๋ฌ๋ผ์ก๋ค. 4.0๋ถํฐ๋ ๊ณต์ changelog.txt ํ์ผ์ด ๋ ์ด์ ๋ฐฐํฌ๋์ง ์๋๋ค. 4ํธ์์ "3.0๋ถํฐ git ํ์คํ ๋ฆฌ๊ฐ ๋จ์์๋ค"๊ณ ํ๋๋ฐ, 4.0์ ์์๋ ๊ทธ ํ์คํ ๋ฆฌ๊ฐ ์ ์ผํ ์์ธ ๊ธฐ๋ก์ด ๋๋ค. ๋ฆด๋ฆฌ์ฆ ํ๋ฆ (4.0 M1.. 2026. 9. 12. ์ด์ 1 2 3 4 ยทยทยท 45 ๋ค์ ๋ฐ์ํ