개발 공부 기록/07. TIL 21

IntelliJ 키워드 - 꿀팁 및 단축키 정리

GroupId : 스프링, 스프링부트등 그룹 ArtifactId : 그룹의 하위 모듈(스프링 시큐리티, 스프링 MVC) Ctrl + Shift + F10: 이 단축키는 현재 포커스가 위치한 클래스나 메소드를 실행합니다. Shift + F10: 이 단축키는 가장 최근에 실행했던 실행 구성(Run Configuration)을 다시 실행합니다. 따라서, 첫번째는 현재 포커스가 있는 위치의 실행 가능한 코드를 실행하는 것이며, 두번째는 가장 최근에 실행했던 코드를 다시 실행하는 것입니다. 이런 차이가 있다. 추가 단축키 생성 단축키 ⇒ Alt + Ins 라인 복제 ⇒ Ctrl + D Redo or DeleteLine ⇒ Ctrl + Y 라인 단위 문자열 합치기 ⇒ Ctrl + Shift + J (쿼리짤때 주로 ..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 5장 스프링 시큐리티

스프링 시큐리티란? 인증(Authentication)과 인가(Authorization) 기능을 가진 프레임워크이다. 보안을 위한 표준이며, 인터셉터, 필터 보단 스프링 시큐리티를 통해 구현하는 것을 권장하고 있다. config.auth 패키지 시큐리티 관련 클래스는 이곳에 있다. 어노테이션 기반으로 개선하기 같은 코드가 반복되는 나쁜 코드를 개선해보자. 유지보수성이 떨어지는 것을 어노테이션으로 작성해서 바꿔보기! (직접 어노테이션을 만들 수 있다.) 세션 저장소로 DB 사용하기 세션이 내장 WAS의 메모리에 저장되므로, 애플리케이션을 재실행 하면 로그인이 풀린다. (항상 초기화된다.) 이는 배포될 때마다 톰캣이 재시작 되는 것이며, 2대 이상의 WAS가 구동되는 환경에선 세션 공유를 위한 추가 설정이 필..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 4장 머스테치

✍학습 키워드 서버 템플릿 엔진이란? 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기한다. JSP, Freemaker등이 있다. 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 HTML로 변환하여 HTML로 전달한다. 자바 진영에는 JSP, Thymeleaf 등의 스프링 진영에서 사용할 수 있는 서버 템플릿 엔진들이 있다. 📝새로 배운 개념 템플릿 엔진(머스테치)의 기본 위치 src/main/resources/templates 이다 @Transactional(readOnly = true) 트랜잭션 범위는 유지하되, 조회 기능만 하도록 설정하여 조회 속도가 개선된다.

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 3장 JPA

✍학습 키워드 JPA? 자바 표준 ORM이다. ORM은 객체를 매핑하는 것 MyBatis, iBatis는 SQL Mapper이며 쿼리를 매핑하는 것이다. JPA는 인터페이스로서 Hibernate같은 구현체가 존재한다. Spring Data의 하위 프로젝트들은 save(), findAll(), findOne() 등을 인터페이스로 갖고 있어 저장소가 교체되어도 기본적인 기능은 변경할게 없다. 여러 성능 이슈 해결책들을 준비해놓은 상태이기 때문에 네이티브 쿼리만큼의 성능을 낼 수 있다. Entity 클래스에서는 절대 Setter 메소드를 만들지 않는다. 해당 클래스의 인스턴스 값들이 언제 어디서 변해야 하는지 코드상으로 명확하게 구분할 수 없기 때문이다. JPA의 영속성 컨텍스트 example.update(r..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 2장 테스트 코드

✍학습 키워드 TDD와 단위 테스트 ( Unit Test )는 다른 이야기다. TDD는 테스트가 주도하는 개발 ⇒ 테스트 코드를 먼저 작성한다. 단위테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것이다. 테스트 코드를 작성하면 빠르게 피드백 해서 sout으로 찍어보거나 굳이 톰캣을 내렸다 올렸다 할 필요가 없다! 테스트 코드로 검증 후, 못믿겠으면 수동으로 검증하는 것이다. 일반적으로 테스트 클래스틑 대상 클래스 이름에 Test를 붙인다. 📝새로 배운 개념 @SpringBootApplication 이 어노테이션으로 스프링 부트의 자동 설정, 스프링 Bean 일긱와 생성을 모두 자동으로 생성해 준다. 여기서부터 설정을 읽어가기 때문에 항상 프로젝트의 최상단에 위치해야만 한다! 롬복 ..

스프링 부트 3로 백엔드 입문하기 TIL - 5장 : ORM (JPA)

✍학습 키워드 ORM이란? ORM(object-relational mapping)은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있다. 데이터베이스에 대한 종속성이 줄어드나, 복잡하고 무거운 쿼리는 ORM으로 해결하기 불가능한 경우가 있다. JPA와 하이버네이트 자바에서는 JPA를 ORM의 표준으로 사용한다. JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 하이버네이트는 JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크이다. 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할..

스프링 부트 3로 백엔드 입문하기 TIL - 4장 : 스프링 부트 3와 테스트

✍학습 키워드 테스트 코드 개념 익히기 테스트 코드는 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드이다. test 디렉터리에서 작업한다 다양한 패턴이 존재하는데, given-when-then 패턴을 주로 사용한다 given-when-then 패턴은 테스트 코드를 세 단계로 구분해 작성하는 방식을 말한다. given은 테스트 실행을 준비하는 단계 when은 테스트를 진행하는 단계 then은 테스트 결과를 검증하는 단계 준비하는 과정, 저장하는 과정(테스트), 검증하는 과정 이여서 세단계로 나뉘는 것이다. @SpringBootTest 메인 애플리케이션 클래스에 추가하는 애너테이션인 @SpirngBootApplication이 있는 클래스를 찾고 그 클래스에 포함되..

스프링 부트 3로 백엔드 입문하기 TIL - 3장 : 스프링 부트 3 구조 이해하기

✍학습 키워드 스프링 부트 3 구조 살펴보기 스프링 부트에는 프레젠테이션, 비즈니스, 퍼시스턴스 계층이 있으며 이 계층들이 서로 통신하며 프로그램을 구성한다. (계층간에 서로 영향을 끼치지 못하되, 필요에 따라 소통한다) 프레젠테이션 계층은 HTTP 요청을 받고 비즈니스 계층으로 전송 비즈니스 계층은 모든 비즈니스 로직을 처리 퍼시스턴스 계층은 DB에 관련한 스토리지 관련 로직 처리 📝새로 배운 개념 프레젠테이션 계층 HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다. 컨트롤러가 프레젠테이션 계층의 역할을 하며, 컨트롤러는 여러개가 있을 수 있다. 비즈니스 계층 모든 비즈니스 로직을 처리한다. 서비스가 비즈니스 계층의 역할을 한다. 비즈니스 로직이란 서비스를 만들기 위한 로직 웹 사..

스프링 부트 3로 백엔드 입문하기 TIL - 1~2장 : 스프링 부트 3 시작하기

✍학습 키워드 스프링부트 3.0 IoC? Inversion of Control, 제어의 역전으로, 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와서 사용하는 것을 말한다. 실제로 스프링은 스프링 컨테이너가 객체를 관리, 제공한다 DI? 제어의 역전을 구현하기 위해 사용하는 방법이 DI이며, 의존성 주입(Dependency Injection) @Autowired 어노테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 한다. 그럼 빈이 몬데? 스프링 컨테이너는 스프링이 제공하는것, 빈을 생성하고 관리하는것, 빈의 생명주기를 관리하는것 대표적인게 @Autowired 같은 어노테이션 ⇒ 빈은 스프링 컨테이너가 생성하고 관리하는 객체, 빈을 등록하는 방법은 @Compo..

코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문 TIL - 1장 스프링 부트 시작하기 ~ 2장 MVC 패턴 이해와 실습

✍학습 키워드 스프링 부트 시작하기 스프링 부트는 자바 기반 웹 서비스를 더욱 쉽고 편리하게 만들기 위해 개발된 도구이다. 스프링 부트에는 자바 웹 프로그램을 만들기 위한 기능과 도구가 모여 있다. JDK는 자바 코드의 번역과 실행을 담당하는 자바 개발 도구 스프링 부트의 개발 환경은 JDK 설치하기 → IDE 설치하기 → 프로젝트 만들기 과정을 거쳐 설정한다. MVC의 역할과 실행 흐름 이해하기 서버는 결국 모델, 뷰, 컨트롤러가 유기적으로 역할을 분담해 클라이언트의 요청을 처리한다. 웹페이지를 화면에 보여주고(View), 클라이언트의 요청을 받아 처리하고(Controller), 데이터를 관리하는(Model) 역할을 영역별로 나누어 하는 기법! 컨트롤러가 클라이언트의 요청을 받고, 뷰가 최종 페이지를 ..