국비 76 - 스프링

냐아암·2023년 8월 10일
0

국비

목록 보기
83/114

Framework

개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가하기 위해 얼련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공되는 것을 말한다.

제여의 역전 개념이 적용됨

📍 장점

  • 개발 시간을 줄일 수 있음
  • 정형화되어있어 일정 수준 이상의 품질을 기대할 수 있음
  • 유지보수가 쉬움

📍 단점

  • 의존도가 높으면 개발자들의 능력이 떨어져 스스로 개발하기 어려움
  • 습득하는 데 시간이 오래 걸림

Spring Framework

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
-> 동적인 웹사이트를 개발하기 위한 여러 서비스를 제공

📍 IOC (제어반전)

  • 컨드롤의 제어권이 개발자가 아닌 프레임워크에 있다
  • 객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하고 있음
  • 객체를 생성하고 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출해 사용

📍 DI (의존성 주입)

  • 설정파일이나 어노테이션을 통해 객체간의 의존 관계를 설정
    --> 개발자가 직접 의존하는 객체를 생성할 필요가 없다.


📍 Spring Annotation

  • @Component : 객체를 나타내는 일반적인 타입으로 태그와 동일한 역할
  • @Repository : 영속성을 가지는 속성을 가진 클래스
  • @Service : 서비스 레이어, 비즈니스 로직을 가진 클래스
  • @Controller : 프리젠테이션 레이어, 웹 애플리케이션에서 View로부터 전달된 웹 요청과 응답을 처리하는 클래스

🔑 왜 서버를 실행하면 메인 화면이 뜨는지?

최상위 주소를 / 로 설정

@RequestMapping("/") 의 메소드가 실행됨 --> main.jsp


🔑 간단한 흐름

  1. 서버 실행

  2. web.xml 파일 읽음

  3. web.xml은 root-context.xml 파일을 읽음
    (root-context.xml은 프로젝트 전반적으로 사용될 설정, 객체(Bean)을 생성하는 용도의 파일) ---> DB, AOP, 트랜잭션 처리, 파일 업로드 등

  4. servlet-context.xml 파일 읽음

    • DispatcherServlet 생성 시 필요한 내용을 정의하는 파일
    • HandlerMapping : 어떤 요청을 어떤 클래스/메소드로 연결하는지 제어하는 객체
    • ViewResolver : controller에서 반환된 문자열 앞, 뒤에 경로, 확장자붙여 jsp 경로를 지정한 후 forward하는 객체
    • <context:component-scan base-package="edu.kh.project" />
      @Component, @Controller, @Servive, @Repository이 붙은 클래스를 찾아 Bean으로 등록
  5. dependencies

     <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    			<dependency>
    				<groupId>org.projectlombok</groupId>
    				<artifactId>lombok</artifactId>
    				<version>1.18.24</version>
    				<scope>provided</scope>
    			</dependency>
    
    			<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11 -->
    			<dependency>
    				<groupId>com.oracle.database.jdbc</groupId>
    				<artifactId>ojdbc11</artifactId>
    				<version>21.5.0.0</version>
    			</dependency>

📍 @Controller : 현재 클래스가 컨트롤러임을 명시 (요청, 응답 처리 + bean 등록)

📍 @RequestMapping("요청 주소") : 요청 주소에 맞는 클래스/메소드 연결 --> GET/POST 구분 X

📍 @RequestMapping(value = "요청주소", method = RequestMethod.GET/POST) --> GET/POST 방식 구분


📍 파라미터 전달

방법 1.

  • HttpServletRequest 이용
    public String login(HttpServletRequest req)

방법 2.

  • @RequestParam 어노테이션 이용
    --> 파라미터의 name 속성값과 매개변수명이 같을 시 생략 가능

    cf. @RequestParam(value="name", required="fasle", defaultValue="1")

방법 3.

  • @ModelAttribute 이용 -> 생략 가능
    • DTO(VO)와 같이 사용하는 어노테이션
    • name속성값과 DTO 필드명이 같다면 자동으로 setter 호출해 필드에 값을 세팅 --> 커맨드 객체
profile
개발 일지

0개의 댓글