티스토리 뷰

spring(boot)

관련 기본 용어들

수학소년 2023. 5. 1. 23:34
  • Apache Maven: 소프트웨어 개발 프로세스를 간소화하는 소프트웨어 프로젝트 관리 툴. 개발 프로세스를 통합하는 기능도 제공.
  • POM: Project Object Model. 프로젝트 기본 정보 pom.xml. 의존성 관리
  •  
  • IoC: Inversion of Control: 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부(스프링 컨테이너 or Ioc 컨테이너)에 위임.
  • 의존성 주입: 다른 객체에 의존하는 객체를 만들 수 있는 소프트웨어 개발 기법. 클래스를 독립적으로 유지하면서 동시에 클래스 간의 상호작용을 도와준다. 클래스를 느슨하게 연결할 수 있다. 단위 테스트가 더 쉬워진다. 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식.
  • 생성자 주입
public class Car {
	private Owner owner;
    
    public Car(Owner owner) {
    	this.owner = owner;
    }
}
  • setter 주입
public class Car {
	private Owner owner;
    
    public void setOwner(Owner owner) {
    	this.owner = owner;
    }
}
  • @Autowired: org.springframework.beans.factory.annotation.Autowired
  • 스프링 공식 문서에서 권장하는 의존성 주입 방법: 생성자를 통한 의존성 주입. 레퍼런스 객체 없이는 객체를 초기화 할 수 없게 설계할 수 있기 때문.
  • AOP: Aspect-Oriented Programming: 관점 지향 프로그래밍: 관점을 기준으로 묶어 개발하는 방식. 여러 비니지스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식.
  • OOP: Object-Oriented Programming: 객체 지향 프로그래밍:
    • 추상화, 캡슐화, 상속, 다형성
  • @SpringBootApplication: @EnableAutoConfiguration + @ComponentScan + @Configuration
  • @EnableAutoConfiguration: 스프링부트 자동구성을 활성화.
  • @ComponentScan: 애플리케이션의 모든 컴포넌트를 찾는다.
  • @Configuration: 빈(Bean) 정의의 원본으로 쓸 수 있는 클래스를 정의한다.
  • @Resource: javax.annotation.Resource
  • CommandLineRunner: 애플리케이션이 완전히 시작되기 전에 추가 코드를 실행할 수 있다. 예제 데이터를 준비.
@SpringBootApplication
public class MainApplication implements CommandLineRunner {
	
    public static void main ....
    
    @Override
    public void run(String... args) throws Exception {
    	// 코드 작성
    }
}
  • FetchType: 데이터베이스에서 데이터를 검색하는 전략을 정의
  • FetchType.EAGER: 즉시 검색
  • FetchType.LAZY: 지연 검색

 

  • REST: Representational State Transfer: 웹 서비스를 제작하기 위한 아키텍처 스타일(by 로이 필딩)
  • stateless: 서버는 클라이언트 상태에 관한 어떤 정보도 저장하지 않는다.
  • 클라이언트-서버의 역할 구분: 클라이언트와 서버는 독립적으로 작동한다. 서버는 클라이언트의 요청 없이는 어떤 정보도 보내지 않는다.
  • 캐시 가능: 웹 서비스는 이용하는 여러 클라이언트가 같은 리소스를 요청할 때가 많다. 따라서 응답을 캐시하는 기능이 있으면 성능 향상에 유리하다.
  • 균일한 인터페이스: 클라이언트는 달라도 보내는 요청은 비슷해야 한다.
    • 리소스ID: 고유 식별자를 가진 리소스가 있다. REST 리소스는 이해하기 쉬운 디렉터리 구조 URI를 노출해야 한다.
    • 표현을 통한 리소스 조작: 리소스를 요청할 때 서버는 리소스의 표현을 응답한다. 일반적인 표현 형식으로 JSON, XML
    • 자체 설명적인 메시지: 메시지에는 서버가 처리하는 방법을 알 수 있을 만큼 충분한 정보가 있어야 한다.
    • HATEOAS: Hypermedia as the Engine of Application State: 응답은 서비스의 다른 영역에 대한 링크를 포함할 수 있다.
  • 계층형 시스템: REST는 계층형 시스템 아키텍처를 이용할 수 있게 해준다.
  • 주문형 코드: 이는 선택적인 제약 조건이다.(?)
  •  

 

  • DTO: Data Transfer Object: 다른 레이어 간의 데이터 교환에 활용
  • ORM: Object Relational Mapping: 객체 지향 언어에서 객체와 RDM의 테이블을 자동으로 매핑하는 방법
  • JPA: Java Persistence API: 자바 진영의 ORM 기술 표준으로 채택된 인터페이스 모음. 내부적으로 JDBC 사용.
  • JPA 기반의 구현체는 대표적으로 1.EclipseLink, 2.Hibernate, 3.DataNucleus.
  • Hibernate: 자바의 ORM 프레임워크. (사실 JPA 자체를 직접 사용 안함. 

출처

[1] 실전! 스프링부트와 리액트로 시작하는 모던 웹 애플리케이션 개발

'spring(boot)' 카테고리의 다른 글

[springboot3]swagger-ui  (1) 2023.05.05
스프링부트 3  (0) 2023.05.02
[microservices]2.소스 추가  (0) 2023.01.31
[microservices]1.프로젝트 기본 뼈대(총 5개 프로젝트)  (0) 2023.01.30
[junit]jacoco로 coverage보기  (0) 2022.11.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함