➕ Web/Spring

5. Spring Boot WorkSpace 설정 방법(기본예시)

Ardor924 2025. 5. 29. 17:30

Spring Boot WorkSpace 설정 방법

◻1. application.properties설정

# .properties 형식 : k = v 
spring.application.name=SpringBootBasic

# 1. port번호 수정
server.port=포트번호

# 2. DB설정(username, pw, url,driver 설정)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:포트번호/스키마명 
spring.datasource.username=관리자이름(디폴트=root)
spring.datasource.password=관리자비밀번호

# 3. JPA설정(필수) 
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

# 4. 콘솔에 SQL문 출력(선택사항)
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql = true

◻2. Controller 설정

◽ 1. @Controller 어노테이션 사용
◽ 2. @Autowired 어노테이션으로 레포지토리주입(=Legacy에서 Maaper역할)
◽ 3. @PostMapping @GetMapping 어노테이션으로 맵핑설정
◽ 4. @RequestParam 으로 파라미터 입력

컨트롤러 코드 예시

package com.smhrd.basic.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.smhrd.basic.SpringBootBasicApplication;
import com.smhrd.basic.entity.MemberEntity;
import com.smhrd.basic.repository.MemberRepository;

import jakarta.servlet.http.HttpSession;

@Controller
public class MemberController {

    private final SpringBootBasicApplication springBootBasicApplication;


    @Autowired
    MemberRepository memberRepository;


    MemberController(SpringBootBasicApplication springBootBasicApplication) {
        this.springBootBasicApplication = springBootBasicApplication;
    }


    // 로그인 기능

    (value = "login.do")
    public String login(@RequestParam String email, @RequestParam String pw,HttpSession session) {

        MemberEntity member = memberRepository.findByEmailAndPw(email, pw);

        // 로그인 성공
        if(member != null) {
            session.setAttribute("member", member);
            return "loginSuccess";
        }else {
            return "redirect:/";
        }

    }

    // 회원가입 기능 구현 
    @PostMapping("/register.do")
    public String register(
                               @RequestParam String email, @RequestParam String pw, 
                               @RequestParam String tel, @RequestParam String address
                            ){

       MemberEntity entity = new MemberEntity();
       entity.setEmail(email);
       entity.setAddress(address);
       entity.setPw(pw);
       entity.setTel(tel);
       memberRepository.save(entity);

       return "redirect:/";
    }

}

◻3. Entity 설정
◽ 1. lombok사용하여 getter,setter, 생성자등 구현
◽ 2. 사용할 테이블의 컬럼(필드)정의
◽ 3. 각 필드에 맞는 의존성 주입

  • @Id : PK설정
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : PK자동증가 설정
  • @Column(nullable = false, unique = true) : 제약조건 설정

Entity 예시코드(=Legacy의 DTO와 유사)

package com.smhrd.basic.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

// lombok 사용 getter/ setter 메소드 구현 
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class MemberEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increase
   private Long id;

   @Column(nullable = false, unique = true)
   private String email;

   private String pw;
   private String tel;

   @Column(length = 100)
   private String address;

}

◻4. Repositoy 설정
![[JPA_CUSTOM.png]]


◽설명 :

  • 커스텀SQL을 작성하는 공간
  • 커스텀SQL 작성시 카멜케이스 필수
    • select문 : findBy로 시작
    • 예시 : select * from TABLE명 where email = ? and pw = ?

Repository 예시코드 (=Legacy의 Mapper와 유사)


package com.smhrd.basic.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.smhrd.basic.entity.MemberEntity;

@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Long>{
    MemberEntity findByEmailAndPw(String email,String pw);
}