SpringBoot
[SpringBoot] 기본 예제 코드
wwxs
2024. 10. 14. 09:08
Member 클래스
더보기
package org.example.springbootdeveloper;
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; // DB 테이블의 'id' 컬럼과 매칭
@Column(name = "name", nullable = false)
private String name;
}
TestController 클래스
더보기
package org.example.springbootdeveloper;
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 {
@Autowired
TestService testService;
@GetMapping("/test")
public List<Member> getAllMembers() {
List<Member> members = testService.getAllMembers();
return members;
}
}
TestService 클래스
더보기
package org.example.springbootdeveloper;
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(); // 멤버 목록을 가져오기
}
}
MemberRepository 인터페이스
더보기
package org.example.springbootdeveloper;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
// DB에서 데이터를 가져오는 퍼시스턴스 계층
// : member 테이블에 접근해서 Member 클래스에 매핑하는 구현체
public interface MemberRepository extends JpaRepository<Member, Long> {
}
application.properties
더보기
server.port=8080
spring.datasource.url=jdb:mysql://localhost:3306/springboot_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 애플리케이션 시작 시 테이블 자동 업데이트
spring.jpa.hibernate.ddl-auto=update
# 실행되는 SQL 쿼리를 콘솔에 출력
spring.jpa.show-sql=true
mysql
더보기
create DATABASE springboot_db;
use springboot_db;
create table member (
id bigint auto_increment primary key not null,
name varchar(255) not null
);
insert into member (name)
values
('hdh'),
('hgd'),
('ayj');
build.gradle
더보기
plugins {
id 'java'
// 프로젝트에 사용할 스프링부트 플러그인 | 스프링의 의존성을 자동 관리하는 플러그인
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'org.example'
version = '1.0-SNAPSHOT'
sourceCompatibility = '17' // 자바 소스 컴파일 버전
repositories {
// 의존성을 받을 저장소 지정
mavenCentral()
}
dependencies {
// 프로젝트 개발에 필요한 기능인 의존성을 입력
// : 스프링부트 웹 관련 기능 제공 | 테스트 기능을 제공
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
// 스프링 데이터 JPA
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation('mysql:mysql-connector-java:8.1.0')
// 데이터베이스 h2 사용
runtimeOnly('com.h2database:h2')
// 반복 메서드 작성 작업을 줄여주는 라이브러리
compileOnly('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
}
test {
useJUnitPlatform()
}