JAVA/Spring

[Spring] Java Spring?

코딩공대 2023. 3. 23. 00:24
728x90

1. Spring Framework란 무엇이며, 장점은?

  • Spring Framework?
    • Java언어를 사용하여 어플리케이션을 구축하기 위한 오픈소스 프레임워크이다.

    • 간단하고 생산적인 자바 개발을 위해 개발되었다.


  • Spring Framework의 장점?
    • 경량성 프레임워크로써 많은 기능을 제공하고 다른 프레임워크보다 가볍고 빠르다.

    • IoC컨테이너를 제공하여 객체의 생성, 소멸 등을 개발자 대신 수행한다.

    • 의존성 주입(DI)를 통한 개발이 가능하다.

    • AOP를 지원해서 공통 로직을 별도의 모듈로 분리하여 코드의 중복을 줄일 수 있다.

    • 테스트 프레임워크와 연동하여 테스트 코드의 작성을 쉽게 할 수 있다.



2. IoC / DI란?

  • IoC(Inversion of Control)?
    • 객체의 생성과 관리를 개발자가 아닌 Spring Framework에 맡기는 것이다. 이 때문에 코드의 테스트 용이성을 높일 수 있다.

    • 객체 간의 의존성을 줄이고 결합도를 낮추며, 코드 유지보수성과 확장성을 높일 수 있다.
    • 동일한 객체를 여러 곳에서 사용할 수 있으며, 객체 간의 의존성을 분리시킬 수 있어 코드의 재사용성을 높일 수 있다.


  • DI(Dependency Injection)
    • 객체간의 의존성을 주입하는 것을 말한다.

    • 인터페이스를 사용해 객체간의 의존성을 줄이기 때문에 코드를 변경할 때 유연성이 높아진다.

    • 객체를 재사용할 수 있도록 만들어준다.

    • 유지보수성을 높이는데 도움을 준다.
    • 단, 객체간의 의존성이 많아져 디버깅이 힘들 수 도 있다.



3. OOP / AOP?

  • OOP(Object - Oriented Programming)?
    • 객체지향 프로그래밍이라고 불리며, 객체를 중심으로 코드를 작성하는 프로그래밍 패러다임이다.
    • 객체를 생성하고, 객체간의 상호작용을 통해 프로그램을 작성한다.

    • 객체릐 상태와 행위를 묶어서 캡슐화하고, 상속과 다형성 등의 개념을 활용해 유연하고 확장성있는 코드를 작성한다.


  • AOP(Aspect Oriented Programming)?
    • OOP와 함께 사용하는 프로그래밍 패러다임이다.

    • 프로그램의 핵심 기능 이외의 공통적인 부가기능을 모듈화하여 관리하는 기술이다.

    • 핵심 기능과 공통 기능을 분리할 수 있어서 코드의 가독성과 유지보수성을 확장시킬 수 있다.

    • 다양한 부가가능을 구현할 수 있다.(로깅, 보안, 트랜잭션 관리 등)



4. DTO?

  • DTO(Date Transfer Object)?
    • 비즈니스 로직에서 사용되는 데이터를 프레젠테이션 로직에서 사용될 수 있는 형태로 변환하는 객체이다.
    • 클라이언트와 서버 간 데이터를 주고받을 때 DTO를 사용한다.

    • 데이터베이스의 테이블과 1 : 1로 매칭된다.

    • 클라이언트에서 필요한 데이터를 서버로 전송하거나, 서버에서 클라이언트로 데이터를 전송한다.



5. Spring Boot 기반 어플리케이션 빌드 시, 주로 사용하는 프로파일(Profile)은?

  • Spring Boot에서 프로파일은 어플리케이션을 특정 환경에 맞게 설정하고 실행할 수 있도록 해준다.

  • application.propertise, application.yml파일에 spring.profiles.active속성을 설정해서 사용한다.
    (나는 매번 yml파일을 사용했다.)

  • Spring Boot에서 여러 개의 프로파일을 사용할 수 있으며, 각각의 프로파일에 대해 별도의 설정 파일을 만들어 사용할 수 있다.


6. Spring MVC에서 REST API 엔드포인트 구현하기 위한 주요 애너테이션은?

  1. @RestController
     : 클래스에 붙이면 해당 클래스의 모든 메서드에서 @ResponseBody를 생략해도 된다.

  2. @RequestMapping
     : URI와 특정 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)에 대해 처리할 매서드를 지정하는데 사용된다.

  3. @PathVariable
     : URL경로에서 값을 추출하여 매개변수로 전달한다.

  4. @RequestParam
     : 요청 파라미터 값을 매개변수로 전달한다.

  5. @RequestBody
     : 요청 본문의 데이터를 객체로 변환하여 매개변수로 전달한다.

  6. @ResponseStatus
     : HTTP응답 상태 코드를 지정한다.

'JAVA > Spring' 카테고리의 다른 글

[Spring] Spring Batch(1)  (0) 2023.04.26
[Spring] Spring Boot 3.0  (0) 2023.03.26
[Spring Web Flux] Project Reactor  (0) 2022.11.30
[Spring Web Flux] Reactive programming  (0) 2022.11.30
[SPRING]Spring Framework  (0) 2022.11.30