

main 디렉토리는 java와 resource로 구성되어 있다.
java : 우리가 작성하는 코드들로 구성
resource
application.yml과 application.properties 차이
Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성이 된다. 하는 역할은 둘 다 같지만, 내부적인 구조가 다르다.
properties의 경우엔 각 줄마다 key=value의 형태로 이루어져 있지만, yml의 경우엔 들여쓰기로 구분되는 계층 구조 및 key: value의 형태로 이루어져 있다.
결론적으로 둘 중 어떤 것을 사용해도 문제가 없지만 properties와 yml을 함께 사용하면 properties 파일이 우선순위가 높아 yml 파일에서 설정한 내용이 덮어씌워질 수 있기 때문에 둘 중 하나만 사용하는 것을 권장한다.
package me.nahyung.springboot3_developer;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "name", nullable = false )
private String name;
}
package me.nahyung.springboot3_developer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
package me.nahyung.springboot3_developer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TestService {
@Autowired
MemberRepository memberRepository; // 빈 주입
public List<Member> getAllMembers(){
return memberRepository.findAll();
}
}
package me.nahyung.springboot3_developer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class TestController {
//@GetMapping("/test")
//public String test(){
// return "Hello, world!";
//}
@Autowired
TestService testService; //TestService 빈 주입
@GetMapping("/test")
public List<Member> getAllMembers(){
List<Member> members = testService.getAllMembers();
return members;
}
}
INSERT INTO member (id, name) VALUES (1, 'name 1')
INSERT INTO member (id, name) VALUES (2, 'name 2')
INSERT INTO member (id, name) VALUES (3, 'name 3')
spring:
jpa:
#전송 쿼리 확인
show-sql: true
properties:
hibernate:
format_sql:true
#테이블 생성 후 data.sql 실행
defer-datasource-initialization: true
Hibernate: drop table if exists member cascade
Hibernate: create table member (id bigint generated by default as identity, name varchar(255) not null, primary key (id))
를 확인할 수 있다.
테이블이 잘 만들어졌다는 것을 확인할 수 있고, 포스트맨으로 HTTP 요청을 보내 TEST 한다.

이처럼, [GET] 요청으로 URL에 controller에 작성했던 ....../test 를 입력하여 send를 눌러 스프링 부트 서버에 HTTP 요청을 보내면,
아까 data.sql 파일로 작성해 저장한 데이터를 클라이언트에서 확인할 수 있다.
해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽