Web
-
[SpringBoot] Maven VS Gradle, 빌드 자동화 도구Web/Java | Spring-boot 2021. 8. 15. 19:12
스터디 개인 과제를 하면서 이번에는 Gradle이 아닌 Maven을 사용하게 되어 차이점을 글로 남긴다 :) Gradle? Maven? 둘 다 우리가 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드과정을 의미한다! Maven - java용 프로젝트 관리도구로 apache의 ant 대안으로 만들어졌다. - 빌드중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml에 명시한다. - Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 모두 다운한 다음, 로컬시스템의 캐시에 모두 저장한다. Gradle - apache maven과 apache ant에서 볼 수 있..
-
[SpringBoot] 빈 생명주기 콜백 (Bean Life Cycle Callback)Web/Java | Spring-boot 2021. 8. 8. 18:20
이 포스팅은 인프런에서 스프링 핵심원리 - 기본편을 듣고 작성한 것입니다. 스프링빈의 기본적인 라이프사이클 -> 객체 생성 -> 의존관계 주입 스프링은 개발자가 초기화 작업을 의존관계 주입이 모두 완료되고 난 후에 할 수 있도록 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공하며, 안전하게 종료 작업을 진행할 수 있도록 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 즉 스프링 빈의 이벤트 라이프사이클은 -> 스프링컨테이너생성 -> 스프링빈생성 -> 의존관계주입 -> 초기화콜백 -> 사용 -> 소멸전콜백 -> 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 스프링은 다양한 방식으로 생명주기 콜백을 지..
-
[SpringBoot] 싱글톤 컨테이너Web/Java | Spring-boot 2021. 8. 8. 18:10
이 포스팅은 인프런에서 스프링 핵심원리 - 기본편을 듣고 작성한 것입니다. 웹 애플리케이션과 싱글톤 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 여러 클라이언트가 동시에 요청을 하고, 이때 요청이 올때마다 객체를 만들어낸다면 낭비가 심하다. 순수한 자바코드에서는 -> 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청할 때마다 객체를 새로 생성. -> 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸됨 -> 메모리 낭비가 심함. 이를 방지하기 위해 사용하는 것이 싱글톤 패턴이다! 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야함. private 생성자를 사용해서 외부에..
-
[SpringBoot] Spring Container, BeanFactory와 ApplicationContextWeb/Java | Spring-boot 2021. 8. 1. 17:14
이 포스팅은 인프런에서 스프링 핵심원리 - 기본편을 듣고 작성한 것입니다. BeanFactory 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean() 을 제공한다. 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공한다. 그렇다면 BeanFactory가 아닌 ApplicationContext가 필요한 이유가 뭘까 ? ApplicationContext에 있는 수많은 부가기능 때문이다! 부가기능 예시 - 메시지소스를 활용한 국제화 기능 예를 들어서 한국에서 들어오면 한국어로, 영..
-
[SpringBoot] 객체 지향 설계, 스프링Web/Java | Spring-boot 2021. 8. 1. 15:44
이 포스팅은 인프런에서 스프링 핵심원리 - 기본편을 듣고 작성한 것입니다. 스프링이란? 스프링은 자바 기반의 프레임워크이며, 자바 언어의 가장 큰 특징인 객체지향언어의 특징을 잘 살려내어 웹 애플리케이션을 개발할 수 있도록 도와준다. 객체 지향의 특징 - 추상화 - 캡슐화 - 상속 - 다형성 다형성 세상을 역할과 구현으로 구분한다. 자동차라는 역할 -> 아반떼, 테슬라등의 구체적 모델로 구현 로미오와 줄리엣이라는 역할 -> 장동건, 김태희라는 구체적 배우로 구현 자바도 마찬가지로 역할 (인터페이스) -> 클래스 (구현) 으로 역할을 나눈다. --> 오버라이딩 즉, 다형성을 이용하여 객체 인스턴스를 실행시점에 바꿀 수 있다. 이를 통해 클라이언트를 변경하지 않고도 서버의 구현을 변경 가능하게 하는 점이 다..
-
[SpringBoot] SpringBoot 프로젝트 구조Web/Java | Spring-boot 2021. 7. 25. 18:07
✅ 각 폴더의 역할 및 구조 정리 src/main/java java 파일들이 저장되는 폴더이다. MVC모델에서 Controller, Service Config 등의 java파일을 해당 위치에 생성하고 작성해야한다. src/main/resources 어플리케이션에서 사용할 리소스 파일들을 모아두는 폴더이다. 아래 세가지 파일이 기본적으로 생성된다. templates - Thymeleaf 와 같은 템플릿, 동적인 뷰 파일 static - CSS, JS, 이미지 등 정적인 파일 application.properties - 전체 프로젝트 파일의 설정 src/test/java XXXAplicationTest 클래스들을 작성하는 폴더이다. 테스트 코드를 통해 곧바로 테스트 가능하다.
-
[SpringBoot] SpringBoot 프로젝트 기본 설정법Web/Java | Spring-boot 2021. 7. 25. 17:51
이 포스팅에서는 가장 기초적인 SpringBoot 프로젝트 설정법을 리마인드 해보고자 한다. (2021.07.25 기준) - SpringBoot stater 사이트에서 스프링 프로젝트 생성 1) Project 최근에는 Gradle을 사용한다고 한다. 2) Version SNAPSHOT이 아닌 버전 선택 3) Project Metadata 그룹명, 프로젝트 명, description등을 설정 4) JAVA Version Jdk 11 사용 5) Dependencies 사용할 외부 라이브러리 선택 - InteliJ로 import(open)해주면 된다! +) 내가 사용한 Dependencies 1. Thymeleaf 서버사이드 자바 템플릿 엔진의 한 종류 View Template Engine이며, 컨트롤러에서 ..
-
[SpringBoot] 스프링 빈 등록하기Web/Java | Spring-boot 2021. 7. 18. 22:48
스프링 빈을 등록하는데에는 크게 두가지 방법이 있다. 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 먼저 1. 컴포넌트 스캔과 자동 의존관계 설정. - @Component annotation을 활용한다! ✅ @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다. ✅ @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다. ✅ @Component 를 포함하는 @Controller@Service @Repository 도 스프링 빈으로 자동 등록된다. 이때 생성자에 @Autowired 를 사용하면 객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서 주입한다. (생성자가 1개일시에는 생략가능) 2. 자바 코드로 직접..