Back-end109 1. Java 웹 기술의 역사 0. 개요 - 이번 포스팅에서는 Java 웹 기술의 변천사를 알아보려고 한다. - Java 웹 기술이 왜 이러한 방식으로 발전해왔는가에 대해 초점을 두고 알아보자. 1. Java 웹 기술의 역사 a) Servlet(1997) - HTTP request/response를 객체로 만들어, 개발자가 쉽게 데이터를 사용할 수 있도록 하였다. - 그러나 데이터를 전달하는 형식에 있어서 HTML을 반환하기가 불편했다. → 일일이 return 값에 HTML을 작성해야 했다. ex) return " 안녕하세요. "; b) JSP(1999) - Servlet의 단점을 보완하는 기술로, HTML 내부에 Java를 작성하는 방식이다. - Java를 사용할 수 있다는 특징으로, HTML 파일 내부에 비즈니스 로직까지 작성했다.. 2022. 2. 22. 0. Web 서비스의 구조 0. 개요 - Spring MVC에 대한 개념을 배우기 전에, MVC라는 구조가 왜 생겼는지를 알아야 한다. - 이를 위해서는 기본적인 Web 서비스의 구조를 이해해야 한다. 1. 모든 것은 HTTP로 소통한다. - 일반적인 Web 서비스는 Client가 internet을 통해 Server와 소통하며 데이터를 주고받는 형태를 가진다. - 소통을 하려면 서로 동일한 언어를 사용해야 하는데, 이를 HTTP라고 부른다. - 위 그림처럼 Client는 HTTP를 사용하여 Server와 소통한다. - Server 또한 HTTP를 사용하여 Client와 소통한다. - 즉, 인터넷 상의 모든 데이터는 HTTP를 통해 전달된다. 2. Web Server의 종류 a) Web Server - Web 서버는 HTTP를 기반.. 2022. 2. 21. 17. Spring 기본개념 총정리 0. 개요 - 이번 포스팅에서는 그동안 배운 Spring의 기본 개념을 정리해보려고 한다. - 이번 포스팅은 다음과 같은 목차로 구성된다. 1. 객체지향과 다형성 2. SOLID원칙 3. Spring Framework를 사용하는 이유 4. Spring Container 5. Bean 수동/자동 등록 6. Dependency Injection 7. Bean Lifecycle 8. Bean Scope 9. Dependency Looking 1. 객체지향과 다형성 a) OOP의 정의 - 객체지향 프로그래밍은 수많은 부품을 이용하여 자동차를 조립하는 것처럼 프로그램을 작성하는 것이다. - 즉, 여러 개의 부품처럼 코드를 기능 단위로 쪼개어 하나의 프로그램을 완성시키는 방법이다. - 그렇다면 어떤 기.. 2022. 2. 18. 16. Bean Scope에 대하여 0. 개요 - 이전 포스팅에서 Spring Bean의 생명주기에 대해 배웠다. - Spring은 Spring Continer의 시작과 종료까지의 큰 흐름 안에 다양한 생명주기를 가진 Bean을 제공한다. - 이번 포스팅에서는 다양한 Bean의 생명주기에 대해서 알아보자. 1. Bean Scope a) Bean Scope란? - Spring에는 다양한 종류의 Bean이 존재한다. - Bean의 역할과 사용 목적에 따라 Bean의 종류가 달라지는데, 이에 따라 다양한 생명주기를 갖는다. - Bean의 종류에 따라 달라지는 Bean 생명주기를 Bean Scope라고 부른다. - 모든 Bean이 애플리케이션이 종료될 때까지 Spring Container에 의해 관리되는 것이 아니다. - 즉, Scope는 Bea.. 2022. 2. 17. 15. Bean 생명주기 콜백 0. 개요 - 실제로 Web App을 운영하면 App 실행 전에 Server는 미리 DB와 연결해두고, 일정량의 Data를 로드해놓는다. - 더불어 종료 시점에는 모든 작업을 종료하는 과정에서 객체의 초기화와 종료 작업을 필요로 한다. - 이처럼 운영하는 이유는, 최초에 App을 실행했을 때 Client의 요청에 빠르게 응답하기 위함이다. - 이 과정을 구현하기 위해 필요한 Spring Bean의 초기화와 종료 과정을 알아보자. 1. Spring Bean의 생명주기 - 최초에 App이 빌드되는 과정에서, Spring Bean은 객체의 생성을 통해 Spring Container에 등록된 후 의존관계를 형성(주입)한다. - 이 준비가 완료되어야 Bean을 이용해 다양한 data를 주고받을 수 있다. - 그러.. 2022. 2. 16. 14. Annotation을 만드는 방법 0. 개요 - 이전 포스팅에서 Bean이 2개 이상인 경우를 해결하는 방법으로 @Qualifier를 언급했다. - 그러나 @Qualifier를 사용하면 컴파일 시 문제가 발생한다. - 이를 해결하는 방법으로 어노테이션을 직접 생성하는데, 이에 대해 알아보자. 1. Annotation을 생성하는 방법 a) @Qualifier의 컴파일 시 문제점 - @Qualifier는 다음과 같이 명시한다. @Qualifier("이름") - 이처럼 명시를 하는데, 문제는 이름을 표현하는 문자열(= "이름")에 있다. - 해당 문자열은 컴파일 과정에서 Bean의 타입으로 인식되지 않는다. - 이를 해결하기 위한 방법으로 직접 Annotation을 생성한다. b) Annotation 생성 방법 - 우선, 어노테이션 파일을 생.. 2022. 2. 15. 13. @Autowired의 다양한 문제 해결방법 0. 개요 - 이전 포스팅에서 @Autowired를 이용한 의존성 자동 주입(DI)에 대해서 알아보았다. - @Autowired의 핵심은 Spring Container에서 관리하는 Bean을 이용한 관계 형성이다. - 의존성을 명시할 때 의존 대상의 인터페이스(= 타입)를 명시하여, 해당 인터페이스를 상속받은 Bean을 찾는다. - 그러나 이 과정에서 다양한 문제가 발생할 수 있다. 이에 대한 해결방법을 알아보자. 1. Bean이 존재하지 않는 경우 - Bean이 존재하지 않아도 동작해야 할 때가 있다. - 하지만 @Autowired를 사용하면 주입할 Bean이 존재하지 않는 경우, NoSuchBeanDefinitionException이 발생한다. - 어떻게 처리할까? a) @Autowired(requi.. 2022. 2. 14. 12. Dependency Injection 방법 0. 개요 - 이전 포스팅에서 의존성 자동 주입 방법과 그 원리에 대해서 배웠다. - 이번 포스팅에서는 Spring에서 제공하는 다양한 DI 자동 주입 방법에 대해서 알아보자. 1. Constructor(생성자) Injection - Spring은 생성자 주입 방식의 사용을 권장한다. a) 구현 방법 - @Component가 붙은 클래스 내부에 생성자를 만든다. - 생성자에 @Autowired를 부착한다. @Component public class TestServiceImpl implements TestService { private final TestRepository testRepository; @Autowired public TestServiceImpl(TestRepository testReposi.. 2022. 2. 11. 11. Dependency Injection 기본개념 0. 개요 - 이전 포스팅에서 Bean 자동 등록과 Spring이 Bean을 탐색하는 방법에 대해 알아보았다. - Bean 자동 등록을 배웠으니, 이제 DI(의존성, 의존관계) 자동 주입에 대해서 알아보자. 1. DI에 대하여 - DI(Dependency Injection)는 객체지향 프로그래밍에서 통용되는 개념이다. - DI는 프로그램간의 결합도를 낮추기위해 사용되는 대표적인 방법으로, 여기에는 강한 결합과 느슨한 결합이 있다. a) 강한 결합 - 객체 내부에서 직접 다른 객체를 생성하여 강한 결합도를 형성하는 구조다. - 앞서 SOLID에서 언급하였지만, 이와 같은 방식은 객체지향 프로그래밍의 OCP를 위반하는 방식이다. - 그 이유는 Client가 직접 구현체를 명시하는 방식이기 때문이다. b) 느.. 2022. 2. 10. 이전 1 ··· 6 7 8 9 10 11 12 13 다음