Back-end/Spring Boot

스프링부트3 백엔드개발자되기 / 2장 스프링 부트 3 시작하기

Bay Im 2023. 11. 18. 12:56
  • 스프링 부트
    • 스프링 코어, 스프링 MVC의 모든 기능을 자동으로 로드하여 개발 환경 구성
    • 자체적으로 WAS를 갖고있다. (톰캣 등)
      • WAS: 웹 어플리케이션을 실행하기 위한 장치
  • IoC(Inversion of Control)
    • 제어의 역전
    • 다른 객체를 직접 생성하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것
    • 스프링에서 객체들을 관리하기 위해 사용
    • 예로 new로 객체 생성이 아닌, private A a; 처럼 받아오는 것
  • DI(Dependency Injection)
    • 의존성 주입
    • IoC을 구현하기 위해 사용하는 방법이며, 스프링 컨테이너에서 객체를 주입받아 사용
    • 예로 @Autowired 어노테이션은 스프링 컨테이너에 있는 빈(스프링 컨테이너에서 관리하는 객체)을 주입하는 역할이며 private A a; 코드 바로 위에 작성하여 객체를 주입받는다.
  • 스프링 컨테이너
    • 빈을 생성하고 관리
    • @Autowired 같은 어노테이션을 사용해 빈을 주입받을 수 있다.
    • 스프링 컨테이너가 생성하고 관리하는 객체
    • 클래스 위에 @Component 어노테이션을 붙이면 해당 클래스가 빈으로 등록된다. 이후 스프링 컨테이너에서 이 클래스를 관리한다.
    • 빈의 이름은 첫글자 소문자로 시작한다.
  • AOP(Aspect Oriented Programming)
    • 관점 지향 프로그래밍
    • 코드를 핵심 기능과 부가 기능으로 나눠서 프로그래밍
  • PSA(Portable Service Abstraction)
    • 이식 가능한 서비스 추상화
    • 스프링 제공 기술을 추상화해서 개발자가 쉽게 사용하는 인터페이스
    • 예로 클라이언트의 매핑과 클래스, 메서드 매핑을 위한 어노테이션, 데이터베이스의 JPA, MyBatis, JDBC, 그리고 WAS 존재
  • @GetMapping
    • 메서드와 매핑할 떄 스프링 부트에서 설정한 경로
  • @RestController
    • 라우터 역할을 하는 어노테이션
      • 라우터: HTTP 요청과 메서드를 연결하는 장치
    • 해당 어노테이션으로 클라이언트 요청에 맞는 메서드 실행 가능
@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        return "Hello World!";
    }
}
  • 스프링 부트 스타터
    • 의존성이 모여 있는 그룹이며 spring-boot-starter-{작업유형} 의 명명규칙이 있다.
    • 스타터
      • spring-boot-starter-web
        • Spring MVC를 사용하여 RESTful 웹 서비스 개발
      • spring-boot-starter-test
        • 스프링 어플 테스트
      • spring-boot-starter-validation
        • 유효성 검사
      • spring-boot-starter-actuator
        • 모니터링
      • spring-boot-starter-jpa
        • ORM을 사용하기 위한 JPA 사용
  • @SpringBootApplication
    • 자바의 main() 같은 역할이며 여기서 스프링 부트가 시작된다.
    • SpringApplication.run() 메서드는 어플리케이션 실행
    @SpringBootApplication
    public class SpringbootDeveloperApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootDeveloperApplication.class, args);
        }
    
    }
    
  • @Component
    • @Configuration
      • 설정 파일 등록
    • @Repository
      • ORM 매핑
    • @Controller, @RestController
      • 라우터
    • @Service
      • 비즈니스 로직
728x90