제어의 역전 : 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것 / 의존관계주입 : 애플리케이션 런타임에 외부에서 실제 구현 객체 인스턴스를 생성하고, 그 참조값을 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것
스프링 컨테이너 : 스프링에서 자바 객체(스프링빈)들을 관리하는 공간
지금까지는 @Configuration이 붙은 자바 설정 파일에 @Bean으로 일일이 스프링 빈을 등록하고, 생성자를 통해서 일일이 의존성을 주입해주었다. 하지만 등록해야할 스프링 빈이 수백개가 된다면 일일이 등록하기도 힘들고, 설정 정보도 커지고, 누락하는 문제도 발
JDBC (Java Database Connectivity)
1. DB 연결 애플리케이션과 DB를 연결해보자 데이터베이스에 접속하는데 필요한 기본 정보(URL, Username, Password)를 편리하게 사용할 수 있도록 상수로 만들었다. 데이터베이스에 연결하려면 JDBC가 제공하는 DriverManager.getConn
queryForObject : 단건조회 (반환값 하나)query : 다건조회 (반환값 리스트)insertupdatedelete
JdbcTemplate은 기본적으로 SQL쿼리 안에서 ?로 표현된 파라미터를 순서대로 바인딩 한다.파라미터를 순서대로 바인딩 하는 것은 편리하기는 하지만, 순서가 맞지 않아서 버그가 발생할 수도 있으므로 주의해서 사용해야 한다.JdbcTemplate에서는 이런 문제를
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다.두 가지의 차이점은 조금 이따 다루기로 하고, 우선은 "Spring에서 사용하는 컨트롤러에는 저 두 어노테이션 중 하나를 붙여야한다~"만 이해하고 넘어가도
Spring MVC가 받은 요청을 처리하는 방식에 대해 알아보자.
예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다.예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다.HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 J
1. @ExceptionHandler 2. @ControllerAdvice
애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다.DB 드라이버는 TCP/IP 커넥션이 연결되면 ID,
transaction의 사전적 의미는 '거래'이다.이 정의를 DB에서 사용되는 transaction에 적용하면,하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다.그런데 하나의 거래를 안전하게 처리하려면 생각보다 고려해야 할 점이 많다.예를 들어서 A의 5000원
컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다.어쩌면 정상로직 개발보다 검증로직 개발이 더 어려울 수도 있다. 하지만 그만큼 중요하다. 클라이언트에서 검증고객이 입력하자마자 바로 반응할 수 있어 편하다조작이 가능해서 보안에 취약하다. 서버에
검증 기능을 매번 코드로 작성하는 것은 굉장히 귀찮다.근데 생각해보면 필드에 대한 일반적인 검증 로직은 대체로 정해져있다.검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 Bean Validation이다.Bean Validation을 잘 활