본문 바로가기

Server/Spring & AWS

[점프 투 스프링] 질문 및 요약정리 (2)

Dependency Injection

ㄴ 스프링이 객체를 대신 생성하여 주입하는 기법을 말한다

 

@Autouired

: 의존성 주입

스프링이 객체를 대신 생성하고 주입한다

 

Q. 객체 주입 방식이 정확히 무엇을 말하는 것일까?

https://mangkyu.tistory.com/125

 

[Spring] 다양한 의존성 주입 방법과 생성자 주입을 사용해야 하는 이유 - (2/2)

Spring 프레임워크의 핵심 기술 중 하나가 바로 DI(Dependency Injection, 의존성 주입)이다. Spring 프레임워크와 같은 DI 프레임워크를 이용하면 다양한 의존성 주입을 이용하는 방법이 있는데, 각각의 방

mangkyu.tistory.com

 

Q. fidbyId의 리턴 타입이 Optional이다. 이 자료형의 특징은 뭘까?

https://mangkyu.tistory.com/70

 

[Java] Optional이란? Optional 개념 및 사용법 - (1/2)

이번에는 Java8부터 지원하는 Optional 클래스에 대해 알아보도록 하겠습니다. 1. Optional이란? Optional 개념 및 사용법 [ NPE(NullPointerException) 이란? ] 개발을 할 때 가장 많이 발생하는 예외 중 하나가 바

mangkyu.tistory.com

https://mangkyu.tistory.com/203

 

[Java] 언제 Optional을 사용해야 하는가? 올바른 Optional 사용법 가이드 - (2/2)

앞선 포스팅에서는 Optional의 개념과 문법을 살펴보았습니다. Optional은 Null이 될 수 있는 객체를 감싸는 Wrapper 클래스이기 때문에 비용이 발생합니다. 그래서 Optional은 필요한 경우에만 사용하는

mangkyu.tistory.com

 

Q. isPresent()의 역할이 무엇일까?

A.

- Boolean 타입

- Optional 객체가 값을 가지고 있다면 true, 값이 없다면 false 리턴

 

findBy+엔티티 속성명과 같은 함수이름만 작성해도 입력한 속성의 값으로 데이터 조회가 가능하다

Q. 리포지토리 메소드는 어떤 개념일까?

 

Q.Mapper와 Repository의 차이점은?

https://pamyferret.tistory.com/69

 

Mapper와 Repository의 차이

DB에 연결해서 데이터를 가져오는 것에 아무 생각 없이 @Repository 어노테이션을 붙여서 개발을 하고 있었다. 그러던 중 지인이 @Mapper와 @Repository의 차이에 물어왔고 생각해보니 그 둘의 차이점을

pamyferret.tistory.com

 

DB세션 : 스프링부트 application 과 db간을 연결한다

Lazy - 데이터를 필요한 시점에서 가져오는 방식

Eager - 객체를 조회할때 미리 모두 가져오는 방식

 

패키지 관리 : 프로젝트 주요 기능별로 나눠서 관리한다

템플릿을 사용하기 위해 템플릿 엔진(타임리프가)이 필요하다

타임리프는 템플릿 상속 기능을 제공한다

 

자주 사용하는 타임리프의 3가지 속성

* 분기문 속성

* 반복문 속성

* 텍스트 속성

 

Q. 타임리프가 무엇일까?

A. 템플릿 엔진의 일종이다

웹 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어

https://hstory0208.tistory.com/entry/Thmeleaf%ED%83%80%EC%9E%84%EB%A6%AC%ED%94%84%EB%9E%80-%ED%83%80%EC%9E%84%EB%A6%AC%ED%94%84%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B8%B0%EB%8A%A5%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

Thymeleaf(타임리프)란 ? 타임리프의 기본 기능알아보기

Thymeleaf(타임리프)란 ? 타임리프는 JSP, Freemarker와 같은 템플릿 엔진의 일종으로 다음과 같은 특징을 갖고 있습니다. 서버 사이드 HTML 렌더링 (SSR) 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용

hstory0208.tistory.com

 

model객체 : 자바클래스와 템플릿 사이의 연결고리

 

Q. 리다이렉트가 필요한 이유?

https://m.blog.naver.com/hands731/221872891036

 

redirect 와 forward 사용 시기, 필요 이유

$리다이렉트가 필요한 이유 -리다이렉트는 사용하기 나름이지만 네이버 카페를 예로 들어 보겠습니다. 카페...

blog.naver.com

 

부트스트랩

웹 디자이너의 도움없이도 개발자 혼자서 상당히 괜찮은 수준의 웹 페이지를 만들 수 있게 도와주는 프레임 워크

 

스프링시큐리티

회원가입, 로그인을 도와주는 스프링 기반 웹 애플리케이션의 인증(로그인과 같은 사용자의 신원을 확인하는 프로세스)과 권한(접근권한 관리)을 담당하는 스프링의 하위 프레임 워크

로그인 설정부분, 현재 로그인한 사용자의 정보 (Principal 객체 사용) 등을 제공한다

@ Configuration : 스프링의 환경설정 파일

@ Enableweb Security : 모든 요청 URL이 스프링 시큐리티의 제어를 받느다

 

 스프링 시큐리티는 웹 사이트의 콘텐츠가 다른 사이트에 포함되지 않도록 하기 위해 X-Frame-Options 헤더의 기본값을 DENY로 사용하는데, 프레임 구조의 웹 사이트는 이 헤더의 값이 DENY인 경우 이와 같이 오류가 발생한다

스프링 부트에서 X-Frame-Options 헤더는 클릭재킹 공격을 막기 위해 사용한다. 클릭재킹은 사용자의 의도와 다른 작업이 수행되도록 속이는 보안 공격 기술이다

 

비번은 보안을 위해 반드시 암호화해야한다

ㄴSBB에선 BCryptpassword Encoder / Bcrypt(비크립트) 해시 함수를 사용했다

* 비크립트 : 해시 함수 하나로, 주로 비번과 같은 보안 정보를 안전하게 저장하고 검증할 때 사용하는 암호화 기술이다

 

bean

스프링에 의해 생성되는 , 또는 관리되는 객체

컨트롤러, 서비스, 리포지토리 모두 빈에 해당한다

 

403 

작동중인 서버에 클라이언트 요청이 들어왔으나 서버가 클라이언트의 접근을 거부했을 때 반환하는 HTTP 오류코드이다

 

CSRF토큰을 세션(사용자의 상태를 유지하고 관리하는데 사용하는 기능) 을 통해 발행하고 

웹 페이지에서는 폼 전송 시에 해당 토큰을 함께 전송해 실제 웹페이지에서 작성한 데이터가 전달되는지를 검증한다

* 토큰 : 요청을 식별하고 검증하는데 사용하는 특수한 문자열 또는 값. 페이지 요청시 항상 다른 값이 적용된다

 

Q. 화면출력이 완료된 후 JS실행이 좋지 않은 이유가 뭘까?

A. 오류가 발생하고, 로딩이 지연되기 때문이다

 

Q. 왜 답변 수정은 POST방식을 쓰는거지? (삭제는 왜 get방식을 쓰는거지?)

A. 답변수정은 보안이 필요한 부분이기 때문이다

페이지를 refresh하거나 이동 할 때에는 post방식보다 get방식이 조금더 유연하다

 

Q. 람다 형식 복습하기

https://go-coding.tistory.com/69

 

[JAVA] 람다는 무엇일까?

이 글은 모던 자바 인 액션책 내용을 정리한 내용입니다. 람다 표현식은 무엇일까? 람다 표현식은 메서들 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없

go-coding.tistory.com

 

 

 

웹을 만들때 고려해야할 것

1. 네비게이션 바

2. 페이징 기능 (JPA관련 라이브러리에 이미 패키지 있다)

get방식으로 첫번째 파라미터는 ?기호를 사용하고, 그 이후 추가되는 값은 &기호를 사용한다

3. 회원가입, 로그인 기능

4. 질문 및 답변 작성 기능

5. 질문 및 답변 수정, 삭제 기능

6. 추천 기능 (DB)

보통 Set으로 받아서 저장한다 (Q. List를 사용하지 않는 이유는?)

7. 앵커 기능

8. 마크다운 기능

텍스트 기반의 마크업 언어

9. 검색 기능 (검색어 입력 + 조회)

검색 대상 : 질문제목, 질문내용, 질문 작성자, 답변내용, 답변 작성자

JPA의 Specification 대신 @Query가 편하다

검색할 때 여러 매개변수를 조합하여 게시물 목록을 조회할땐 get을 사용한다

새로고침 또는 뒤로가기 시 만료 페이지 오류가 발생하기 때문이다 

 

* 댓글기능 추가

* 카테고리 추가

* 비번 찾기 & 변경기능 추가

* 프로필 화면 구현

* 최근 답변과 댓글 순으로 노출시키기

* 조회수 표시하기

* 소셜미디어 로그인 기능

* 마크다운 에디터 (simpleMDE) 적용해보기

 

 

Q. aws 라이트세일의 특징은?

https://paperblock.tistory.com/2

 

아마존 라이트세일의 특징과 장점 (웹호스팅 vs. VPS)

이번 글에서는 웹 호스팅과 VPS (Virtual Private Server) 호스팅의 차이를 알아보고, 최근 많은 사람들이 사용하고 있는 아마존의 VPS 서비스인 라이트세일에 대해서 알아보도록 하겠습니다. 라이트세

paperblock.tistory.com

 

Q. JAR과 WAR의 배포차이점은?

https://cocococo.tistory.com/entry/JAR-WAR-%EB%B0%B0%ED%8F%AC-%EC%B0%A8%EC%9D%B4%EC%A0%90%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90

 

JAR WAR 배포 차이점과 장단점

JAR(Java ARchive)와 WAR(Web ARchive)은 Java 애플리케이션을 패키징하는 방식이다. 1. JAR(Java ARchive) 파일 1-1) 장점 독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR 파일로 만들어서 개발자

cocococo.tistory.com

 

Q. SSH 또는 SFTP란?

https://parkadd.tistory.com/129

 

[네트워크] SSH 와 SFTP (feat. SCP vs SFTP)

SCP 와 SFTP 둘 다 파일을 전송할 수 있는 프로토콜인데 무슨 차이가 있는지 궁금해서 학습을 시작했습니다 :) SSH란? SSH(Secure SHell)은 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로

parkadd.tistory.com

 

Q. ci cd란?

https://seosh817.tistory.com/104

 

[CI/CD] CI/CD란? - 지속적 통합(Continuous Integration)/지속적 배포(Continuous Deployment) 기본개념

매번 개발자가 코드를 수정하고 빌드와 테스트를 하고 배포까지 한다면 상당히 많은 시간이 소요됩니다. 하지만 git에 코드를 올리는 것만으로도 누군가가 빌드와 테스트, 배포까지 해준다면,

seosh817.tistory.com