코드스테이츠_국비교육/[Section2] 40

40.02_[Section 2] 회고_22.10.19

어느새 Section2가 끝이 났다... 진짜 시간이 빠르다. 분명 나는 얼마전까지만 해도 방황하는 백수였고, 코드스테이츠 리뷰들을 검색하고 있는 교육 예정자였다. 근데 어느새 거기서 봤던 리뷰만큼이나 내가 학습을 한 교육생이 되었다. 약간의 뿌듯함을 느끼며 Section2를 회고해보도록 하겠다. 1. 멘탈이 갈려버렸다. Section2에서 제일 기억에 남는 건 멘탈이 나가버린 나의 모습들이다. Section2는 Section1보다 훨씬 학습량이 많고, 그리고 학습의 깊이도 훨씬 깊다고 느껴졌다. Section2의 시작을 열었던 알고리즘부터 HTTP, DATABASE, 그리고 SPRING까지 아~주 나쁜놈이 다른 모습로 다양하게 나를 흠씬 패줬다. 그래도 덕분에 깨달은 것도 많고 바뀐 것도 많은 기간이라..

40.01_[Section 2] KPT 회고_22.10.19

KPT 회고_설명 회고 기법 중 KPT 회고가 많이 알려진 기법이라고 한다. 살펴보니 목표를 설정하고 목표를 달성하는 과정을 체크하기 용이해보인다. 그래서 나도! 지금이라도 KPT 회고를 통해 목표를 향해 달려가는 내 자신을 확인하려고 한다! 우선 KPT 회고 작성 순서는 아래와 같다. 아래 작성 순서와 참고 질문들을 토대로 나만의 KPT 회고를 작성해보겠다. 목표 상기하기 Keep, Problem 작성하기 Try 작성하기 우선순위 정하기 KPT 회고 1. 목표 코드스테이츠라는 부트캠프를 수료하고 최대 3~4개월 내로 취업을 하는 것을 목표로 한다. 위 목표가 코드스테이츠를 처음 시작하며 정했던 목표였다. 지금 목표를 다시 상기시켜보니 상당히 추상적이다는 생각이 든다. 그리고 나는 이번 주 할 일, 이번..

39.02_[Spring] AOP_22.10.18

>AOP 흩어진 관심사를 모아서 따로 처리하는 것이 AOP이다. 여기서 관심사는 Crosscutting Concerns을 의미한다. Crosscutting Concerns이란 객체(클래스)에서 핵심 로직이 아닌 부가적인 기능을 담당하는 부분을 말한다. 부가적인 기능을 담당하기 때문에 한 객체에만 있지 않고 해당 기능이 필요한 다른 객체에도 똑같이 존재할 수 있다. 즉, AOP란 객체들에 존재하는 Crosscutting Concerns들을 종류별로 모아서 처리하는 것이라고 할 수 있다. >Aspect 같은 Crosscutting Concerns을 하나로 모아놓은 것을 Aspect라고 한다. 그리고 모아놓았다는 것은 모듈화를 했다는 의미와 같다. >Target Aspect를 적용할 객체(클래스)를 의미한다...

39.01_[Spring] IoC, DI_22.10.18

>IoC, Inversion of Control 제어의 역전을 의미하는 용어이다. 클래스 간 의존 관계를 형성하기 위한 방법으로는 클래스 내부에서 new 키워드로 다른 클래스의 객체를 생성하는 것이 있을 것이다. 하지만 이는 단점이 많은 방법이고 불편하다. 이를 편리하게 하며 단점을 극복하기 위해 Framework가 의존 관계를 형성하게 만드는 방법을 IoC(제어 역전)라고 한다. >Spring IoC Container Spring IoC Container는 Spring Framework에서 IoC 기능을 담당한다. Container라고 불리우는 이유는 내부에 다른 객체를 만들어 놓고 이를 관리하기 때문인데, 이 객체들을 Bean이라고 하며, Spring Framework내에서는 Bean을 Spring ..

38~39_[Spring Core] AOP 키워드_22.10.17~22.10.18

AOP (Aspect Oriented Programming) >개요 -Aspects : Advice + PointCut = Aspect : Advice, 부가 기능을 정의한 코드 : PointCut, 어드바이스를 어디에 적용할 지 결정하는 부분 -Core Concerns (핵심 기능) : 업무 로직을 포함하는 기능 : 객체의 고유한 기능 -CROSS-CUTTING CONCERNS (부가적인 기능) : 로깅, 보안, 트랜젝션 등 : 횡단 관심사라고도 함. : 단독으로 사용되지 않고 핵심 기능과 함께 사용됨. >Spring MVC -@Controller -@Service -@Repository >AOP -등장 배경 : Core Concerns과 CROSS-CUTTING CONCERNS을 분리, 즉 관심사 분..

36~37_[Spring Core] DI 키워드_22.10.13~22.10.14

>DI(Dependency Injection) -생성자 -IoC >Spring Container -Bean -Bean의 생명 주기 -BeanFactory -ApplicantionContext >Bean -@Bean -getBean(); -BeanDefinition -MetaData : XML or Java >Bean Scope -Singleton >Java 기반 Container 설정 -@Configuration -@Bean -@Component -@Autowired -JSR-330 메타 데이터(주석) -@Import >ComponentScan -basePackages : @ComponentScan(basePackages= " ") -@SpringBootApplication -ComponentScan 기..

35.03_[Spring] Spring Framework_Spring Boot_22.10.12

Spring Boot >의미 : Spring Framework의 단점이었던, 초기 설정의 복잡함의 문제를 해결하기 위한 Spring Project 중 하나 >Spring Boot을 사용해야 하는 이유 XML 기반의 복잡한 설계 방식 지양 : XML 기반의 설계는 다른 형식 간 데이터 전송이 편리하다는 장점이 있다. : 하지만 아주 복잡하고 장황한 코드로 작성해야했고, 이로 인한 단점들(응답 시간, 실행 속도 등)이 있었다. : 이를 극복하기 위해 Spring boot는 java 기반의 설정을 제공했고, Spring 3.1.부터는 Java로만 설정이 가능하다. 의존 라이브러리의 자동 관리 : Spring Boot 이전에는 필요한 라이브러리를 일일이 추가해야 했다. : 직접 이름과 버전을 작성해야 했기에 오..

35.02_[Spring] Spring Framework_모듈 아키텍쳐_22.10.12

아키텍처로 보는 Spring Framework 모듈(Module) 구성 : Spring Framework는 아래 처럼 구성되어 있다. : 약 20개의 모듈로 구성. : 아래 대부분의 모듈은 인터페이스이다. 겁내지말고 인터페이스 구성을 어느정도 공부하면 구현하는건 금방 익숙해질 것이다! 1. Core Container : Spring Framework의 핵심 기능을 제공 : Beans, Core, Context, SpEL(Spring Expression Language)로 구성 >Beans : DI 기능 제공하는 모듈 : 컨테이너 내부에 만든 객체들을 beans라고 함. : IDE에서 코드 왼쪽에 초록색 콩이 보이면 beans라는 의미이다. : beans로 등록하는 방법이 따로 존재한다. >Core : 다..

35.01_[Spring] Spring Framework_아키텍쳐 개요_22.10.12

아키텍쳐 >의미 : 어떤 건물이나 구조물과 같은 결과물의 컨셉과 대략적인 구조를 심플하게 표현한 것 : 조감도나 청사진 시스템 아키텍쳐 >의미 : 하드웨어와 소프트웨어를 모두 포함한 시스템의 전체적인 구성을 간략하게 그림따위로 표현한 것. 웹 애플리케이션 아키텍쳐 >계층형 아키텍쳐(N-티어 아키텍쳐) API Layer : 클라이언트의 요청을 받아들이는 계층 Service Layer : API 계층에서 전달 받은 요청을 업무 도메인의 요구 사항에 맞게 비즈니스적으로 처리하는 계층 Data Accesse Layer : 비즈니스 계층에서 처리된 데이터를 데이터베이스 등의 데이터 저장소에 저장하기 위한 계층 용어 정리 모듈 : 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미 :..

34.06_[Spring] Spring Framework_AOP, PSA_22.10.11

AOP(Aspect Oriented Programming) >의미 : 관심 지향 프로그래밍 : 핵심 관심 사항과 공통 관심 사항을 분리하는 것. : 각 클래스들이 본연의 일만 할 수 있도록, 공통된 기능을 가진 부분들을 한 곳으로 따로 모으는 것이다. : Aspect는 애플리케이션의 공통 관심사를 의미한다. >필요한 이유 : 코드의 간결성, 코드의 재사용, 그리고 궁극적으로는 객체 지향 설계 원칙에 맞는 코드 구현을 위해서이다. >방법 컴파일 된 바이트코드(.class)를 조작하는 방법 : 컴파일 된 바이트코드에 공통적으로 넣어줄 부분을 끼워 넣기 프록시 패턴 사용 : Spring이 사용하는 방법 : 내부에 객체(클래스)를 생성해서 원하는 메서드 호출 전후로 넣어줌 PSA(Portable Service ..