Spring Framework
-
2장 자바와 절차적/구조적 프로그래밍Spring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 2. 00:01
자바 자바는 객체 지향 언어이며 프로그래밍 언어이다. 객체지향 프로그래밍은 절차적 프로그램의 어깨를 딛고 있습니다. 절차적 프로그래밍을 한마디로 표현하면 goto를 쓰지 말라는 것이며 자바에서는 이미 goto를 예약어로 등록해 두고 사용하지 못하도록 선점해 두었습니다. 자바 공식문서에서 goto가 not used임을 확인할 수 있습니다. goto를 사용하면 프로그램의 실행 순서가 인간이 이해하기에 너무 복잡해질 가능성이 있습니다. 이동이 잦아지면 소스를 이리저리 따라가면서 프로그램을 이해하기 어렵습니다. 자바에 남아있는 절차적/구조적 프로그래밍의 유산 continue for break if switch boolean 등등 프로그램 실행 시 지역변수, 전역변수, 함수와 관련된 stack 책을 보고 잘 이해..
-
1장 - 사람을 사랑한 기술Spring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 1. 00:01
스프링의 등장 스프링을 비롯해 모든 신기술은 갑자기 나타난 것이 아니다. 이전 기술을 거름 삼아 새로운 철학과 기법을 더해 나가는 것이다. 그러면 스프링을 학습하려면 이전 기술들을 마스터해야 할까? 단지 이전 기술을 빠르게 훑어보면 됩니다. 기계어 -> 어셈블리어 -> C언어 -> C++ -> Java 스프링을 계속 이야기하는 이유는 현존하는 개발 사상과 개발 지원 제품 가운데 스프링이 가장 선봉에 서 있고, 이전 기술들의 어깨를 딛고 정상에 오른 제품이기 때문입니다. 하지만 객체지향을 모르고 스프링을 안다는 것은 어불성설입니다. 스프링의 3대 삼각형 IoC/ ID AOP PSA(Portable Service Abstraction) 잘 만든 인터페이스로 Spring Web Mvc, Spring Trans..
-
Controller에서 List 받기(+ dto로 받고 validation)Spring Framework 2023. 3. 22. 00:01
Controller에서 List 받기 Controller 코드 구성 import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @RestController class TestController { @GetMapping("/test/list") fun inputList( @RequestParam("list") list: List ): String { println(list) return list.toString() } } Postman으로 요청하기..
-
Spring 버전에 맞는 Dependency 버전 찾기Spring Framework 2023. 2. 6. 00:01
개요 Spring Batch 애플리케이션을 다루는 중 JPA에서 Cursor가 지원되지 않는다는 글을 보았습니다. 하지만 Spring Batch v4.3.0이 릴리즈 되면서 JpaCursorItemReader가 도입되었습니다. 이렇게 되면서 Spring Batch 4.3 버전을 사용하기 위해서 Spring Boot는 최소 몇 버전을 사용해야 할까? 라는 의문점에서 시작되어 Spring 버전에 맞는 Dependency 버전을 찾아보고자 합니다. Dependency 버전 찾기 1. 스프링부트 사이트에 들어가서 사용하려는 스프링 부트 버전의 Reference Doc. 을 클릭 https://spring.io/projects/spring-boot#learn Spring Boot Commercial support..
-
-
@Transactional 어노테이션이란?Spring Framework 2022. 9. 14. 00:01
트랜잭션이란? 트랜잭션이란 데이터베이스에 자주 보이는 용어입니다. 트랜잭션은 "하나의 일련의 연산이 모두 반영되거나 아니만 아예 아무것도 반영되지 않아야 합니다" 예를 들면 A -> B에게 송금을 하는 상황을 떠올리면 좋습니다. A의 계좌에서 일정 금액이 빠져나가면 B계좌에는 일정 금액이 들어와야 합니다. 만약 A의 계좌에서 일정금액 출금되고 B계좌에는 입금되지 않는다면 은행은 큰 신뢰를 잃어버리게 됩니다. 이때 작업단위를 다음과 같이 구분해보겠습니다. 작업 1은 A의 출금 작업 2는 B의 입금 각각의 작업은 서로 다른 DB Connection으로 이루어질 수 있기 때문에 이 두 작업을 트랜잭션으로 묶어주어야 합니다. 트랜잭션의 적용 @Transactional을 적용하지 않고 트랜잭션을 적용하기 위해서는..
-
@SpringBootApplication의 역할Spring Framework 2022. 6. 24. 00:01
Spring Boot 프로젝트를 생성한 후 main 메서드는 아래와 같습니다. @SpringBootApplication public class AnthillApplication { public static void main(String[] args) { SpringApplication.run(AnthillApplication.class, args); } } @SpirngBootApplication 내부로 들어가 보면 아래와 같습니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(exc..
-
@Bean vs @ComponentSpring Framework 2022. 5. 24. 01:55
@Bean과 @Component를 언제 사용해야 할지 명확하게 대답할 수 없었기 때문에 이를 공부하고자 했습니다. @Bean과 @Component란? Ioc Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하여 빈을 가져오기 옵니다. 이때 대표적으로 빈을 등록하는 어노테이션이 바로 @Bean과 @Component입니다. (실제로 @Repository, @Service, @Controller 내부에는 @Component가 정의되어 있습니다.) @Bean이란? 단일 bean을 명시적으로 선언하는 데 사용됩니다. 클래스 정의에서 빈 선언을 분리하고 선택한 방식대로 빈을 만들고 구성할 수 있습니다..