일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- thymeleaf
- MySQL
- go
- Spring
- mariadb
- Git
- 파이썬
- spring security
- Vue.js
- 코드업
- springboot
- Spring Boot
- golang
- Python
- 오블완
- 객사오
- Gradle
- Codeup
- 알고리즘
- H2 설치
- GitHub
- 클린 코드
- 티스토리챌린지
- java
- 스프링
- 기초100제
- 클린코드
- JPA
- Postman
- 롬복
- Today
- Total
목록Spring (8)
nyximos.log
작년 이맘때 처음 스프링부트를 접하게 되었는데 많이 생소했던 기억이 난다. 여러 책들과 강의 블로그를 봐도 이해하기 어려웠어서 Spring 입문자들을 위한 포스팅을 해볼까 한다. 이후 포스팅에서는 Spring Boot + Gradle + MySQL + JPA + Thymeleaf 환경에서 간단한 CRUD를 만들어 볼 것이다. 프로젝트를 시작하기 앞서 Java의 객체 지향, List, Array List를 공부해야 이해가 빠를것이다. 그리고 이 글은 HTTP, 데이터베이스를 공부한 적이 없으며 웹 프로젝트가 처음이다! 하는 사람이 읽으면 좋을 것 같다. 개발 환경 구성 전 꼭 알아야하는 것들을 알아보자. 시간적 여유가 있다면 아래 책을 읽거나 강의를 보는 것을 추천한다. 비전공자를 위한 이해할 수 있는 I..
윈도우 기준입니다. Application을 Run하니 이런 에러가 떴다. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2022-02-04 00:22:40.284 ERROR 34156 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ***************************APPLICATION FAILED TO START***************************Description:Web server failed to start. Port 8080 was already..
Project 빌드 툴 선택 Maven / Gradle Language 언어 선택 Project Metadata Name 프로젝트명 ArtifactId와 같아야 한다. Location 프로젝트 위치 GroupId 프로젝트별로 구분할 수 있는 고유한 이름 보통 기업의 domain을 사용한다. Java 패키지 네이밍 규칙을 따른다. - 도메인명을 반전하여 사용 원하는 갯수 만큼 하위 그룹을 만들 수 있고 프로젝트 구조를 사용한다. 다중 모듈 프로젝트인 경우 상위 그룹의 groupId에 새 식별자를 추가한다. ex) org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting ArtifactId 버전을 제외한 jar 이름 (빌드 결과물 이름) ..
🤔 빈 스코프란? 빈이 존재할 수 있는 범위 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 : 프로토타입 빈의 생성+의존관계 주입까지만 관여하는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application : 웹 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 빈 스코프 지정방식 1. 컴포넌트 스캔 자동 등록 @Scope("prototype") @Component public class HelloBean{} 2. 수동 등록 @Scope("prototype") @Bean PrototypeBe..
👶 빈 생명주기 콜백 시작 객체의 초기화와 종료 작업 필요 데이터베이스 커넥션 풀, 네트워크 소켓처럼 애플리케이션 시작시점에 필요한 연결 미리해둠 애플리케이션 종료 시점에 연결 모두 종료 스프링 빈의 라이프 사이클 객체 생성 → 의존관계 주입 (데이터 사용할 수 있는 준비 완료) 개발자는 의존관계 주입이 완료된 시점에 초기화 작업을 호출해야 한다. 스프링은 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주고과 종료 직전 소멸 콜백을 준다! 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링 종료 📌 초기화 콜백 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 📌소멸전 콜백 빈이 소멸되기 직전에 호출 스..
🤹♂️ 다양한 의존관계 주입 방법 의존관계 주입은 4가지 방법이 있다. 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 1. 생성자 주입 이름 그대로 생성자를 통해 의존관계 주입 생성자 호출시점에 한번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용된다. 😮☝ 생성자가 딱 1개 있으면 @Autowired를 생략해도 자동 주입 된다. (스프링 빈에만 해당) 2. 수정자 주입(setter 주입) 필드 값을 변경하는 수정자 메서드를 통해 의존관계 주입 선택, 변경 가능성이 있는 의존관계에 사용된다. 자바빈 프로퍼티 규약의 수정자 메서드를 사용하는 방법이다. 📌 자바빈 JavaBean JavaBeans Convention에 따라 작성된 자바 클래스🙆♀️ 컴포넌트 🙅♀️ 📌..
자바코드의 @Bean이나 XML의 등을 통해 개발자가 직접 스프링 빈을 등록해야 했지만 이렇게 직접 등록할 때는 단점이 많다. 1. 귀찮다. 2. 설정 정보가 커진다. 3. 누락할 수도 있다. 🤹♀️ 그래서 스프링은 컴포넌트 스캔 기능을 제공한다. @ComponentScan 설정 정보에 붙이면 자동으로 스프링 빈을 등록한다. + @Configuration에도 @Component가 붙어있다. @Autowired 의존관계를 자동으로 주입한다. 생성자에서 여러 의존관계를 한꺼번에 주입받을 수도 있다. 컴포넌트 스캔과 자동 의존관계 주입 동작 순서 1. @ComponentScan : @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. 2. @Autowired 의존관계 자동 주입 : 스프링 컨테이..
@Configuration 설정을 구성한다는 뜻 스프링 설정 클래스를 선언한다. IoC Container에게 해당 클래스를 Bean 구성 Class 임을 알려준다. @Bean 스프링 컨테이너에 스프링 빈으로 등록 @Configuration을 안 붙여도 빈으로 등록이 가능하지만 싱글톤을 보장받지 못한다. 스프링 컨테이너 ApplicationContext를 스프링 컨테이너라 한다. XML이나 애노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 객체 생성과 DI를 스프링 컨테이너를 통해 한다. @Configuration이 붙은 애를 설정(구성)정보로 사용한다. @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. → 스프링 빈 이전에는 개발자가 필요한 객체를 직접 조회했지만..