| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- java
- Google OAuth
- lombok
- Volatile
- OAuth 2.0
- Spring
- builder
- nestjs
- factory
- synchronized
- middleware
- spring security
- Dependency Injection
- 일급 컬렉션
- 일급 객체
- Today
- Total
목록전체 글 (191)
HJW's IT Blog
스프링 컨테이너 생성 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 : 어플리케이션 전반에 ..
Container란?컨테이너(Container)는 애플리케이션 실행 환경을 격리하고 관리하기 위해 사용되는 경량화된 가상화 기술이다.컨테이너를 이해하기 위해 OS 를 간단하게 이해하는것이 필요하다.보통 컴퓨터 한대에 OS 하나가 설치된다. 이러한 OS 를 살펴보면 크게 3덩어리가 있다. Process, Kernel, Hardware.Process 내의 program 들은 하트웨어 리소스를 나누어 가진다.HW 의 경우 IO, speaker, keyboard 등등 여러 리소스를 관리해야 하는데, 이 역할을 하는것이 OS 의 핵심이다.Kernel 의 경우, 위와 같은 프로세스로 부터 sys call 을 받게 되는데, 이 요청에 따라 리소스를 각 프로세스에 할당, (분산), 을 하게 된다. 위와 같은 상황에서 ..
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..
문제 분석이 문제는 크기가 N x M 인 지도 위에서 주사위를 굴리는 시뮬레이션 문제이다. 주사위 이동에 대한 명령이 주어지며, 이동한 칸의 값에 따라 주사위와 지도의 값을 교환한다.문제 요구사항주사위는 주어진 명령에 따라 이동한다1 : 동2 : 서3 : 북4 : 남주사위가 지도 바깥으로 나가는 명령을 받는 경우 무시한다주사위가 이동했을때, 지도의 값이 0 이라면, 주사위의 바닥면을 복사한다주사위가 이동했을때, 지도의 값이 0 이 아니라면, 칸의 값을 주사위의 바닥에 복사하고, 칸은 0이 된다.코드 설계Dice 클래스Dice 는 6가지 면의 상태를 기록해 두는 클래스로, second : 윗면, fourth : 아랫면 을 기준으로 first : 북쪽을 바라보는 면, third : 남쪽을 바라보는면, lef..
Github Action필요 프레임워크가 설치되어 있는 ubuntu 서버를 받아와, 내부에서 npm run, npm run build 를 통해 성공 실패 여부를 판단한다.이때 하나라도 실패시 → 개발자가 오류를 파악, 코드 업데이트성공시 → merge pull request → deploy.github 폴더 생성workflows 폴더 생성{name}.yml 파일 생성name: teston: pull_requestjobs: test: runs-on: ubuntu-22.04 steps: - name: Checkout repository uses: actions/checkout@v3 - name: Node.js setup uses: actions/set..
Servlet서블릿이란, JAVA를 기반으로 하는 웹 프로그래밍 기술 중 하나로, Dynamic Web Page 를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다.웹상에는 다양한 req 와 res 가 있는데, 이러한 요청과 응답을 일일이 처리하게 되면 많은 시간과 노력이 소요 된다. 이때 서블릿이 사용된다. 서블릿이란 복잡한 요청과 응답을 간단한 메서드 호출 만으로 체계적으로 다룰 수 있도록 해주는 기술이다.개발자가 소스를 작성하게 되면, 컴파일 되어 서블릿 컨테이너에 등록되고, 클라이언트와 소통할 때 컨테이너에 등록된 서블릿을사용하게 된다. 즉, 클라이언트는 서블릿 컨테이너에 요청을 보내고, 서블릿 컨테이너가 처리한 후, HTTP 형식으로 응답을 하는 것이다.서블릿 컨테이너위에서 요..