Spring Boot는 Spring 프레임워크를 기반으로, Spring을 더 쉽고 빠르게 사용하기 위해 만들어진 도구이다.
위 사이트에서 원하는 옵션을 설정해 프로젝트를 만들 수 있다.
설정 후 Generate를 클릭하면 압축 파일이 다운로드된다.
다운로드 받은 파일을 풀고, build.gradle 파일이 있는 폴더를 프로젝트로 열면 된다.
build.gradle : Gradle 빌드 도구의 설정 파일DemoApplication.java : Spring Boot 실행 클래스application.properties : 애플리케이션 설정 파일 (yml로 변경 가능)plugins 블록은 프로젝트에 필요한 Gradle 플러그인을 선언하는 곳이다.
repositories 블록은 의존성을 다운로드할 저장소를 지정하는 곳이다.
dependencies 블록은 프로젝트에 필요한 라이브러리를 선언하는 곳이다.
또한 dependencies 블록 안의 Spring Boot Starter는 특정 기능을 사용하기 위해 필요한 의존성을 묶어놓은 패키지라고 보면 된다.
예시:
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.6'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'org.example'
version = '0.0.1-SNAPSHOT'
description = 'iocexam'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
Spring Boot 애플리케이션의 시작점을 표시하는 어노테이션이다.
예시:
@SpringBootApplication
@RestController
public class HellospringApplication {
@GetMapping("/default")
public String hello() {
return "Hello Spring Boot! 111111111111";
}
@GetMapping("/spring")
public String spring() {
return "Hello Spring Boot! 2222222222222";
}
@GetMapping("/rnckdgus")
public String rnckdgus() {
return "나의 페이지 추가";
}
public static void main(String[] args) {
SpringApplication.run(HellospringApplication.class, args);
}
}
Bean을 등록하는 방법은 크게 3가지가 있다.
1) @Component 어노테이션 사용
2) @Configuration + @Bean 사용
3) XML 설정 (레거시)
오늘은 Java Config 방식으로 Bean을 생성해본다.
public class MyBean {
private String name;
private int age;
public MyBean() {
System.out.println("MyBean 생성!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
@Configuration
public class MyBeanConfig {
@Bean
// @Scope("prototype")
public MyBean mybean() {
return new MyBean();
}
}
System.out.println("공장 세우기 전");
ApplicationContext context =
new AnnotationConfigApplicationContext(MyBeanConfig.class);
System.out.println("공장 세운 후");
MyBean mybean = (MyBean) context.getBean("mybean");
mybean.setName("koo");
System.out.println(mybean.getName());
의존성을 주입하는 방법은 아래와 같다.
1) 생성자를 통한 주입
2) 설정자(setter 메서드)를 통한 주입
3) 필드에 직접 주입 (비권장, 추후 어노테이션 방식에서 다룸)
public class Player {
private Dice dice;
public Player() {
this.dice = new Dice();
}
}
// 사용
Player player = new Player();
public class Dice {
private int face;
public Dice() {
System.out.println("Dice() 실행!!");
}
public Dice(int face) {
this.face = face;
System.out.println("Dice(int) 실행!!");
}
public void setFace(int face) {
this.face = face;
}
public int getNumber() {
return (int)(Math.random() * face) + 1;
}
}
public class Player {
private Dice dice;
public void setDice(Dice dice) {
this.dice = dice;
}
}
// 사용
Player player = new Player();
Dice dice = new Dice();
player.setDice(dice);
이렇게 의존성 주입을 통해 객체를 생성하면, 제어권을 외부에서 가지게 되고 결합도도 낮아진다.
긴 명절 연휴를 끝내고 다시 수업이 시작되었다.
오랜만에 듣는 수업이라 뭔가 어색했지만 연휴를 이용해서 복습도 하고 공부도 조금씩 하다 보니 크게 어려움 없이 수업에 집중할 수 있었다.
오늘은 스프링부트를 시작하였다. 말로만 듣던 프레임워크를 사용한다고 하니 신기하기도 했고 배울 게 많아 무섭기도 한 감정으로 수업을 들었다.
첫 시간이라 내용이 많지는 않았지만 아직 아리송한 개념들이 많은 것 같다.
이러한 부분들은 차차 알아가도록 하고 배운 것들을 내 것으로 만드는 데 집중해야겠다.
오늘 회고조가 바뀌었다. 근데 전 회고조의 아는 분이 두 분이나 계셔서 좀 놀랐다. 2차 회고조는 5명이라 소수로 진행되는데 빠지지 말고 잘 들어야겠다.