일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Google OAuth
- lombok
- java
- 일급 컬렉션
- builder
- nestjs
- Volatile
- Spring
- Dependency Injection
- synchronized
- middleware
- 일급 객체
- factory
- spring security
- OAuth 2.0
- Today
- Total
목록SPRING (20)
HJW's IT Blog

📔 웹 어플리케이션과 싱글톤스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 그렇기에 대부분의 스프링 어플리케이션은 웹 어플리케이션이다. 웹 어플리케이션의 특징은, 보통 여러 고객이 동시 요청을 보낸다는 점이다. 그렇다면 어플리케이션이 커지고, 트레픽이 많아질 수록, 객체 생성 비용과 메모리 사용량은 증가하게 되고, 많은 리소스를 소모한다는 뜻이다. 다음은, 스프링이 없는 순수한 DI 컨테이너 테스트 예시이다. public class SingletonTest { @Test @DisplayName("스프링 없는 순수 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); ..

스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 Spring Container 라 한다. BeanFactory 도 있지만, 거의 사용하지 않는다.Spring Container는 XML 을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.AnnotationConfigApplicationContext 는 ApplicationContext interface 의 구현체이다.생성 과정1.Spring Container 생성 이 상태는 구성 정보가 지정되어 있지 않는 컨테이너가 생성된다. 이를 활용하기 위..

스프링 생태계Spring 은 어떤 특정한 하나가 아닌 여러 기술들의 모음이다.Spring Framework핵심 기술 : Spring DI Container, AOP, Event, 기타 등등Web 기술 : Spring MVC, Spring WebFlux데이터 접근 : transaction, JDBC, ORM기술 통합 : Cache, Email, 원격, 스캐줄링Test : 스프링 기반 testSpring BootSpring 을 편하게 사용할 수 있도록 지원단독 실행 가능한 Spring Application 생성Tomcat 과 같은 웹 서버 재장손쉬운 build 를 위한 starter 종속성 제공Spring 과 3rd party 라이브러리 자동 구성메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공..

AOP란 무엇인가?AOP(Aspect Oriented Programming) 은 관점 지향 프로그래밍이다. 쉽게 말해, 어플리케이션의 핵심 비즈니스 로직에서 부가적인 기능을 분리하여 모듈화하는 패러다임이다. 각 기능을 모듈화 함으로써 공통 모듈을 분리하여 코드의 가독성과 유지 보수성을 향상 시키는데에 목적이 있다. OOP랑 뭐가 다를까?OOP(Object Oriented Programming) 의 경우, 클래스를 중심으로 모듈화를 하는 반면, AOP 는 관점에 집중한다. 여기서 관점이란 **여러 객체와 모듈에서 공통적으로 나타나는 Cross-Cutting Concern 을 의미한다. AOP vs OOP1️⃣ 모듈화의 기준OOP : 객체와 클래스 중심의 모듈화가 이루어 진다.AOP : 어플리케이션 전반에 ..
Component Scan과 자동 의존관계 설정Spring은 기본적으로 @ComponentScan을 통해 특정 패키지와 그 하위 패키지를 스캔하여 @Component가 붙은 클래스를 Bean으로 등록한다.@SpringBootApplication에 이미 @ComponentScan이 포함되어 있어, 별도의 설정 없이도 이러한 동작이 가능하다.Spring Bean 등록 예시@Controllerpublic class MemberController {}위와 같이 선언하면, Spring Container가 생성된 후 MemberController 객체를 생성하여 Spring이 관리하게 된다.의존성 주입 예시MemberService를 사용하려면 해당 의존성을 Spring Container에 등록하고, 주입받아야 한다..

HTML? Controller?hello-static.html 이라는 요청이 들어오면, 우선 hello-static 관련 컨트롤러가 있는지 찾아본다. Mapping 된 컨트롤러가 없을 경우, Sprin 은 /static 폴더 내에서 정적 컨텐츠를 찾아 반환한다.@Controllerpublic class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; }}안녕하세요. 손님 위와 같은 controller 와 html 이 있을 경우, 요청이 들어올 시, controller mapping 을 통해 해당 메서드가 있는것을 확인한다...
IoC 란?Inversion of Control(제어의 역전) 은 SW 엔지니어링에서 사용되는 원칙으로, 객체 혹은 프로그램의 일부에 대한 제어권을 컨테이너로 이전하는 개념이다. 전통적인 프로그래밍의 경우, 개발자가 작성한 코드가 라이브러리를 호출하는 구조이다. 하지만 IoC 를 사용할 경우, 프레임워크가 개발자의 코드를 호출하도록 한다. 우리는 왜 IoC 를 사용하는지에 집중해야 한다. IoC를 통한 장점은 다음과 같다.작업 실행과 구현의 분리 : 특정 작업을 수행하는 로직과, 해당 작업을 구현하는 방식을 분리할 수 있다.구현 간 전환의 용이성 : 서로 다른 구현체간 전환이 쉽다프로그램의 모듈화 향상 : 각 구성 요소가 독립적으로 모듈화 된다.테스트 용이성 증가 DI 란?Dependency Inject..
Servlet서블릿이란, JAVA를 기반으로 하는 웹 프로그래밍 기술 중 하나로, Dynamic Web Page 를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다.웹상에는 다양한 req 와 res 가 있는데, 이러한 요청과 응답을 일일이 처리하게 되면 많은 시간과 노력이 소요 된다. 이때 서블릿이 사용된다. 서블릿이란 복잡한 요청과 응답을 간단한 메서드 호출 만으로 체계적으로 다룰 수 있도록 해주는 기술이다.개발자가 소스를 작성하게 되면, 컴파일 되어 서블릿 컨테이너에 등록되고, 클라이언트와 소통할 때 컨테이너에 등록된 서블릿을사용하게 된다. 즉, 클라이언트는 서블릿 컨테이너에 요청을 보내고, 서블릿 컨테이너가 처리한 후, HTTP 형식으로 응답을 하는 것이다.서블릿 컨테이너위에서 요..

MVC Pattern 이란?Model View Controller 패턴이다. 어플리케이션의 데이터(Model) , 사용자 인터페이스 (View) , 제어로직 (Controller) 를 분리하여 개발하는 아키텍처 패턴이다.Model : 데이터와 비즈니스 로직을 처리하는 계층으로, 데이터베이스와 상호작용하며, 데이터를 가공하고 조작한다. Model 은 View 혹은 Controller 에 대한 정보를 가지고 있지 않다View : 사용자에게 표기되는 UI 계층으로, Model 의 데이터를 가져와 사용자에게 보여준다.Controller : 사용자의 입력을 받아 Model 과 View 를 제어하는 계층으로, 사용자의 요청을 처리한다. Model어플리케이션의 정보, 데이터 등을 나타내는데, 다음과 같은 규칙을 가진..
IOC : Inversion of ControlIOC는 객체 생성 / 객체 사이의 의존성 관리를 개발자가 직접 제어하는 것이 아닌 컨테이너 혹은 프레임워크에 맡기는 것을 의미한다. 이를 통해 객체 간의 결합도를 낮출 수 있다.전통적인 프로그래밍 방식은 객체를 직접 생성하고 의존성을 관리해주어야 한다. 예를 들어 A 객체가 B 객체를 사용한다면 A 객체 내에서 B 객체를 생성해야 한다. 하지만 IOC 를 사용하면,클래스 내부의 객체 생성 → 의존성 객체의 메소드 호출 이 아닌 스프링에게 제어를 위임하여 스프링이 만듣 객체를 주입 → 의존성 객체의 매소드 호출 구조이다.DI : Dependency InjectionIOC 패턴의 일종으로, 객체 간의 의존성을 외부에서 주입하는 방식으로, 생성자, setter ..