➕ Web/Spring

4. SpringBoot 기본기능 소개

Ardor924 2025. 5. 29. 17:29

SpringBoot 기본기능 소개

🔶Spring Boot BasicApplication

@SpringBootApplication

3개의 annotation이 합쳐진 기능

◻1. @SpringBootConfiguration

  • 전반적으로 spring boot의 환경설정을 담당

◻2. @EnableAutoConfiguration

  • 사용하고자 하는 라이브러리를 경로상에 두기만하면(pom.xml) 필요한 객체들을 자동으로 생성하고 사용 - DB정보만 작성하면 HikariCP 등 bean 객체를 생성
    ◻3. @ComponetScan
  • 자동으로 객체들을 Container에 등록

🔶 Spring Boot
◻ 톰캣서버 내장
◻ 프로젝트를 파일로 바꾸면 배포가능

🔶 로그인 컨트롤러 예시

@Controller
public class MemberController {

    // 로그인 기능
    @PostMapping(value = "login.do")
    public String login(@RequestParam String email, @RequestParam String pw) {

        return "login";
    }
}

◻ DB접근을 위해 JPA의 repository 생성(=Mybatis의 Mapper역할)
◻ repository에 있는 메소드를 활용하여 sql문장을 실행
◻ 의존성 주입을 위해 Repository를 @autowired

🔶 JPA
◻ DB연결을 위해 JPA사용

  • Boot 에서는 JPA 사용 권장
    ◻ java 개발자는 Java 코드만 작성
    ◻ sql 실행 문장을 메소드로 작성
    ◻@Repository에서 구현(interface)
  1. interface에 @Repository 달아주기
  2. 테이블이 있는 객체 생성
  3. JpaRepository 인터페이스 상속받기!
  4. 상속받으면<T,ID> 작성요구
    • T : 테이블 -> 테이블이 있는 객체 이름 (엔티티명)
    • ID : 테이블이 있는 객체명에 ID컬럼의 자료형 (PK의 자료형)
  5. Entity 패키지와 Entity클래스 생성
    • jpa annotation 활용
    • entity를 table로 활용
    • Entity 클래스에 @Entity 달아주기
    • jpa는 필수적 으로 PK가 필요
    • @ID로 PK지정
    • @GeneratedValue(strategy = GenerationType.IDENTITY)옵션으로 PK자동증가설정
    • @Column(nullable = false, unique = true) 로 유니크값 설정
  6. JPA에서 기본적으로 CRUD지원
    • save(entity)

🔶 JPA 쿼리
◻ save(entity) Insert문
ㄴ insert into TABLE명 values (EntityVal)

◻ delete(매개변수)
ㄴ delete from TABLE명 where pk = 매개변수

◻ findAll()
ㄴ select * from TABLE명

◻ findById(PK)
ㄴ select * from TABLE where PK컬럼명 = PK값

◻ 커스텀메소드
![[JPA_CUSTOM.png]]

  • select -> findBy로 시작
  • select * from TABLE명 where email = ? and pw = ?
  • where 절에 들어가는 컬럼명들은 카멜표기법 으로 작성
  • 예) findByEmail
  • @Query("select * from ")

🔶 Repository
◻ SQL문을 실행하기위한 메서드 를 생성
◻ 생성된 메서드로 커스텀SQL을 사용할수있다.

🔶Timeleaf 템플릿
◻ Spring Boot에 HTML에서 Java 코드(th식)를 사용할수 있게 도와주는 기능

◻ 사용방법
xmlns:th="http://www.thymeleaf.orgf를 html에 속성에 추가

<html lang="ko" xmlns:th="http://www.thymeleaf.org">