본문 바로가기

Spring/Springboot

📝 AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 개념 AOP(Aspect Oriented Programming)란? 1) 스프링의 3대 요소 제어 역전(IoC), 관점지향 프로그래밍(AOP), 추상화 서비스(PSA) 중 하나 2) OOP(객체지향 프로그래밍)를 보완하는 수단 👉🏻 여러 곳에서 쓰이는 공통 기능을 모듈화하고, 모듈화 한 것을 필요한 곳에 정의하여 사용함 👉🏻 소스 코드 상에서 다른 부분에 계속 반복해서 쓰는 코드인 흩어진 관심사(Crosscutting Concerns)를 Aspect(관점)로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것 주요 개념 1. Aspect(관점): 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 코드를 부분적으로 나누어서 모듈화 하는 것 2. Target: As.. 더보기
📝 Spring Bean이란 무엇이며 어떻게 등록해야 할까? 1. Spring Bean이란? Spring의 Bean은 Spring IOC Container가 관리하는 객체들을 의미한다. 자바 애플리케이션은 동작을 제공하는 객체들로 이루어져있다. 이 때 객체들은 독립적으로 동작하는 것보다 서로 상호작용하며 동작하는 경우가 많다. 이렇게 상호작용하는 객체를 ‘객체의 의존성(dependency)’이라고 표현한다. 스프링에서는 스프링 컨테이너가 객체들을 생성하고 객체끼리 의존성을 주입하는 역할을 한다. 스프링 컨테이너가 생성한 객체들을 Bean이라고 하며 Bean은 Spring에서 사용하는 어플리케이션 객체라고 이해할 수 있다. Spring Bean을 사용하면 여러 클래스에서 따로 new 연산을 하여 동일한 객체를 만들 필요가 없이 spring IOC Container에.. 더보기
📝 gradle이란 무엇이며 어떠한 장점이 있을까? Gradle(그래들)은 빌드 자동화,개발 지원에 중점을 둔 도구를 말한다그래들은 그루비(Groovy)를 기반으로 Ant,maven의 장점을 취합하여 만들어졌다. 장점 직관적임 Maven과 다르게 xml로만 이루어져있지않아 내가 원하는 것을 찾기가 쉬움. 각 작업에 필요한 라이브러리들만 가져올수있음 필요한 범위에 따라서 다른 라이브러리를 가져오는 방식 점진적 컴파일링을 지원하기에 부분적으로 수정된 내용은 빠르게 재 컴파일링이 가능함. 즉 그래들은 Ant -> Maven -> Gradle 순으로 나왔기 때문에 앞에 나온 자동화 도구들의 단점을 해결한 자동화 도구이다. 더보기
📝 restAPI의 put 과 patch 는 어떤 차이점이 있을까요? 어떤 경우에 사용하면 좋을까요? PATCH와 PUT은 둘 다 데이터의 수정을 위한 method이다. PATCH : which is used to apply partial modifications to a resource PUT : method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload 예를 들어, PUT 요청 시 요청을 일부분만 보낸 경우 나머지는 default 값으로 수정되는 게 원칙이므로, 바뀌지 않는 속성도 모두 보내야 한다. (만약 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null 혹은.. 더보기
📝 Controller, Service, Repository 가 무엇인가요? 📝 Controller, Service, Repository 가 무엇인가요? Component: 스프링에서 관리하는 컴포넌트 Controller, Service, Repository는 컴포넌트의 하위 개념 Controller는 Service를 호출하고 Service는 Repository를 호출함 Controller: 제일 바깥 쪽에서 요청을 받고, 응답을 되돌려주는 역할 Service: 중간에서 구체적인 작업 순서를 결정 Repository: DB와 직접 소통함으로써 자료를 생성하고, 조회하고, 변경하고, 삭제하는 역할 더보기
스프링 빈 생명 주기(Spring Bean Life Cycle) 보호되어 있는 글입니다. 더보기
스프링 빈 생명 주기(Spring Bean Life Cycle) 기본 개념 빈 (Bean): 스프링이 관리하는 객체 스프링 IoC 컨테이너: Bean(객체)을 모아둔 저장소이자 빈 관리 -> 객체의 생명주기(Life Cycle)인 생성과 소멸 관리, 객체 간 의존성 주입 등 @Bean 어노테이션의 주요 내용 @Configuration 설정된 클래스의 메소드에서 사용가능 메소드의 리턴 객체가 스프링 빈 객체임을 선언함 빈의 이름은 기본적으로 메소드의 이름 @Bean(name="name")으로 이름 변경 가능 @Scope를 통해 객체 생성을 조정할 수 있음 @Component 어노테이션을 통해 @Configuration 없이도 빈 객체를 생성할 수도 있음 빈 객체에 init(), destroy() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정할 수 있음 // .. 더보기
Controller, Service, Repository의 역할 Controller 클라이언트의 요청을 받음 요청에 대한 처리는 서비스에게 전담 클라이언트에게 응답 Service 사용자의 요구사항 처리(비즈니스 로직) DB정보 필요 시 Repository에게 요청 Repository DB관리(연결, 해제, 자원 관리) DB CRUD 처리 더보기