본문 바로가기

개발중/Spring

(88)
Sql Mapper (mybatis) 의 단점 요약 ! Sql Mapper 는 java 와 xml 이 완전히 분리되어 있어 JDBC 를 사용하는 것에 비해 편리하다. 하지만 Sql Mapper 프레임워크도 단점이 존재한다. 그 단점에 대해 알아보려 한다. 반복되는 코드와 SQL SQL 을 직접 사용하므로 테이블이 많아지면 Value 클래스가 많이 필요하다. 또한 테이블이 많아질수록 SELECT, INSERT, UPDATE, DELETE 기본 쿼리도 테이블 개수만큼 작성해야 한다. SELECT 구문이 복잡해지거나 조인 쿼리를 사용할 때마다 객체 클래스 들이 더 필요하게 되다. 이와 비례하여 XML Mapper 에 쿼리 결과와 값 객체 클래스의 속성을 매핑하는 구문이 추가된다. DAO 클래스의 메서드가 늘어나면 메서드 개수에 비례하여 SQL 코드양이 증가한다. ..
[Spring] Spring Bean 에 대한 기록 SpringBean ? Spring 을 말할 때 빼먹을 수 없는 용어이다. Spring Bean 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈이라고 칭한다. 또한, 스프링 컨테이너가 생성과 관계설정, 사용들을 제어해주는 제어의 역전이 적용된 오브젝트를 가리키는 말이다. 면접용 질문에 대한 답으로는 아래와 같이 명확한 답이 준비되어있다. '스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체(POJO)를 의미한다.' Spring Container 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 스프링 컨테이너에 적용된다. 개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식..
[Spring] 스프링 생성자 주입 방법 3가지 스프링에서는 의존성 주입이라는 특징이 있는데, 의존성을 주입하기 위한 세 가지 방법을 알아보자. 1. 생성자 주입(Constructor Injection) 클래스의 생성자가 하나이고, 그 생성자로 주입받을 객체가 빈으로 등록되어 있다면 @Autowired를 생략 할 수 있다. @Controller public class binsooController { private final BinsooService binsooService; @Autowired public binsooController(BinsooService binsooService) { this.binsooService = binsooService; } } 2. 필드 주입(Field Injection) 필드에 @Autowired 어노테이션만 붙여..
JWT 인증과 Session 인증의 차이 JWT JWT는 JSON Web Token의 약자로써 세션에 사용자 데이터를 저장하는 전통적인 쿠키 세션 방식과 다르게 json 객체에 사용자 정보의 일부를 담는다. 기존 쿠키 세션 동작 방식과 문제점 쿠키 세션 방식을 사용하는 이유를 이해하기 위해선 HTTP 프로토콜의 특성을 이해할 필요가 있다. Stateless HTTP 프로토콜은 클라이언트와 서버의 통신이 끝나자마자 상태 정보를 잊어버린다. 예를 들어 USER1이 방금 전까지 서버와 통신을 했더라도 연결이 끊기자마자 USER1이 누구인지 까먹어버리고 다시 클라이언트의 정보를 요구하는 것이다. 페이지를 이동할때마다 내가 누구인지 확인하는 로그인 창이 뜨면 매우 귀찮을 것이다. 이를 해결하기 위해서 세션과 쿠키라는 기술을 사용한다. 로그인 과정 세션은..
[SpringBoot] SpringBoot Retrofit Retrofit 이 뭐야 ? OKHttp 라이브러리를 기반으로 http 통신을 할 수 있게 도와주는 자바 라이브러리이다. 보통 안드로이드 또는 스프링 웹 어플리케이션 서버에서 외부 서버와 API 통신을 하기 위해 사용합니다. JAVA에서 HTTP 통신을 하기위한 대표적인 라이브러리가 HttpUrlConnection 이다. HttpUrlConnection의 단점 - 코드가 길어지며 가독성이 떨어진다. - Json 으로 받은 객체를 일일이 Convert 해야한다. HttpUrlConnection의 장점 - 가독성이 높아진다. - Json 으로 받은 객체를 일일이 Convert 해야한다. import java.util.List; import retrofit2.Call; import retrofit2.http...
[Spring] framework 와 Spring 에 대해서 알아보기 스프링 이름도 힘든 개발을 했던 겨울이 가고 개발하기 좋은 봄이왔다는 것을 의미한다. 프레임워크와 스프링부트 애플리케이션을 만들 때 프레임워크 없이 개발하는 것은 어렵고 고된일이다. 프레임 워크는 용도에 맞는 일반적인 기능들을 보편적인 방식으로 제공한다. 예를 들어 웹 애플리케이션은 HTTP 프로토콜을 사용하여 사용자 요청에 따른 적절한 응답을 한다. 그래서 웹 애플리케이션 프레임 워크는 HTTP 프로토콜 기반의 요청(request)과 응답(response) 울 처리할 수 있도록 특정 객체나 클래스등을 제공한다. 개발자는 프레임워크에서 제공하는 기능을 사용하면 보다 편리하고 쉽게 애플리케이션을 개발할 수 있으며, 이는 곧 개발자의 개발자의 생산성향상으로 이어진다. 프레임워크를 선택하는 방법도 다양하다. ..
[Spring] 단일책임원칙을 지키고 있나요 객체지향의 주요 5가지 원칙(SOLID) SRP (Single Responsibility Principle) 단일 책임 원칙 OCP (Open Closed Principle) 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) 리스코프 치환 원칙 ISP (Interface Segregation Principle) 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) 의존 역전 원칙 객체지향 5원칙은 왜 필요한가? 올바른 객체지향 설계를 위해 수립한 원칙들이며 통틀어 객체지향 5원칙(SOLID)이라고 불립니다. 이는 필수로 적용하지는 않지만 적어도 이 원칙을 준수할수록 올바르게 설계된 객체지향이라 할 수 있습니다. 프로그래머가 시간이 지나도 유..
intellij jdk 설정하는 방법 기록하기 ✍ Project Structure창 (단축키 : SHIFT+CTRL+ALT+S) 1) SDK 변경 2) Language Level 변경 3) Language Level 변경 4) 원하는 JDK를 선택한다(JDK는 한 폴더에 모아두는것을 추천!) Project Setting (단축키 : CTRL+ALT+S) Build,Execution,Deployment -> Build Tools -> Gradle 5) Gradle JVM 변경 6) Project bytecode version 변경