| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- BACK-END
- spring
- oracle
- 알고리즘
- jsp
- 서버
- 데이터베이스
- 오라클
- 코드테스트
- 정리
- 코드 테스트
- 미니정리
- 백엔드
- JavaScript
- 디자인 패턴
- 스프링부트
- 스프링
- MySQL
- 프론트엔드
- node.js
- SQL
- 쿼리
- java
- jpa
- 자바
- 자바스크립트
- 프로그래머스
- web
- Next.js
- 프런트엔드
- Today
- Total
목록Spring (36)
참치코더의 꿈 메모장
Http 요청 데이터 Get - 쿼리 파라미터 - 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달- 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form - content-type : application/x-www-form-urlencoded- 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20- 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 - HTTP API에서 주로 사용, JSON, XML, TEXT- 데이터 형식은 주로 JSON 사용- POST, PUT, PATCH ** GET 이나 POST로 서버(서블릿)으로 보낼때 클라이언트 입장에서는 두 방식에 차이가..
스프링 웹 스코프 정리웹 스코프란?웹 스코프는 웹 환경에서만 동작한다.프로토타입과 달리 스프링이 종료 시점까지 관리하기 때문에 종료 메서드 호출이 가능하다.웹 스코프의 종류1. RequestHTTP 요청이 들어오고 나갈 때까지 유지되는 스코프.요청마다 별도의 빈 인스턴스가 생성된다.2. SessionHttpSession과 동일한 생명주기를 가진다.3. ApplicationServletContext와 동일한 생명주기를 가진다.4. WebSocket웹 소켓과 동일한 생명주기를 가진다.Request 스코프 예시@Component@Scope(value = "request")public class MyLogger { private String uuid; private String requestURL; ..
스코프는 빈이 존재할 수 있는 범위를 뜻한다. 싱글톤 스코프 - 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스코프- 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계(DI) 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프- request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다.- session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다.- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. - 결국 싱글톤 스코프와의 차이점은 싱글톤은 스프링이 끝까지 관여하면서 빈을 관리해주고 아무리 호출해도 똑같은 객체를 반환해주는 것이고, 프로토타입은 빈 ..
애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면객체의 초기화와 종료 작업이 필요하다. 스프링 빈의 이벤트 라이프 사이클 - 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 - 초기화 콜백 : 빈이 생성된 후 , 빈의 의존관계 주입(Setter DI, 필드 DI)이 완료된 후 호출- 소멸전 콜백 : 빈이 소멸되기 직전에 호출 스프링은 크게 3가지 방법으로 빈 생명주기 콜백을 지원한다. - 인터페이스(initializingBean, DisposableBean)- 설정 정보에 초기화 메서드, 종료 메서드 지정- @PostConstruct @PreDestory 애..
애노테이션 만들기 @anotation에는 상속이란 개념이 없다. 여러 애노테이션을 모아서 사용하는 기능은 스프링이 지원해주는 기능이다. @Qualifier 뿐만 아니라 다른 애노테이션들도 함께 조합해서 사용할 수 있다. 하지만 스프링이 제공하는 기능을 뚜렷한 목적 없이 무분별하게 재정의 하는 것은 유지보수에 더 혼란만 가중 할 수 있다. ** 동일한 기능을 하는 컴포넌트가 2개 이상이면 @Qualifier을 사용하면 해당 이름으로 의존관계를 연결할 클래스를 지정 할 수 있다 ** @Primary를 사용해도 의존관계를 연결할 클래스를 지정 할 수 있다. 자동 스프링 빈 등록 , 수동 스프링 빈 등록 뭘 사용? - 스프링 부트는 일반적으로 @ComponentScan을 기본으로 선호하고 여러 애노테이션들..
롬복과 최신 트랜드 - 대부분의 필드가 다 불변이고 final 키워드를 사용하게 된다. - 필드 주입 처럼 생성자 주입을 사용할 수 있는 방법은 롬복(Lombok) 라이브러리를 사용하는 것이다. - 롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다. - 최근에는 생성자를 딱 1개 두고, @Autowired를 생략하는 방법을 주로 사용한다. - 여기에 @RequiredArgsConstructor 함께 사용하면 기능은 다 제공하면서, 코드는 깔끔하게 사용할 수 있다. @Autowired 필드 명, @Qualifier, @Primary - 조회 대상 빈이 2개 이상일 때 해결 방법 1. @Autowire..
옵션 처리 - 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. - @Autowired(required) 옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다. 자동 주입 대상을 옵션으로 처리하는 방법 3가지 ** @Nullable, Optional은 스프링 전반에 걸쳐서 지원된다. 생성자 자동 주입에서 특정 필드에서 검사할때 사용해도 된다. 생성자 주입을 꼭 사용해야 하는 이유 1. 불변 - 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. - 수정자 주입을 사용하면, setX 메서드를 public으로 열어두어야 한다. - 생성자 주입은 객체를 생성할 때 1번만 호출되므로 불변하게 설계할 수 있다. 2. 누락 - 생성자 주입..
생성자 주입 - 생성자를 통해서 의존 관계를 주입 받는 방법이다. - 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다 - 불변, 필수 의존관계에 사용 - 생성자가 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. 물론 스프링 빈에만 해당한다. 주입 시점 : 객체 생성 시점에 주입됨 불변성 : final 사용 가능, 이후 수정 불가 필수 의존성 : 강제할 수 있음 테스트 편의성 : 테스트 시 의존성 명확하게 주입 가능 스프링 공식 문서에서 가장 권장되는 방식 수정자 주입(setter 주입) - setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법이다. (setter에 @Autowired 붙이면 생성자를 사용하지 않고 setter로 값을 주입시켜 준..