▼ Why ?
올해 초부터 백엔드 개발에 관심이 생겨 스터디를 통해 Java를 공부하기 시작했다. 그리고 방학부터 Spring을 공부하기 시작했고, 동아리 내에서 진행하는 웹 개발 프로젝트 "Donggram"을 참여하면서 백엔드 개발에 필요한 웹 관련 지식(http, OS, Network, DB, etc)을 쌓는 중이다. 이렇게 개념을 공부하는 것도 중요하지만, 복학하기 전부터 대학생활을 통해 가장 얻어가고 싶었던 부분이 프로젝트 경험이었다. 프로젝트 경험뿐만 아니라 같은 분야 혹은 다른 분야의 사람들과의 커뮤니케이션을 통해서 얻어갈 수 있는 부분이 너무나도 많다고 복학하고부터 느끼고 있다. 프로젝트 경험을 쌓고 개발자를 목표로 하는 사람들과 커뮤니케이션하는 기회를 얻을 수 있는 자리가 GDSC라고 생각이 들었고, 따라서 GDSC Seoultech의 Web 파트에 지원하게 되었고 . GDSC(Google Developer Student Clubs)는 구글 개발자 기술에 관심이 있는 대학생들을 위한 커뮤니티로, 개발자로 성장하고자 하는 학부생들이 함께 활동하는 커뮤니티이다. GDSC의 첫 활동은 각 분야별로 커리큘럼에 따라 스터디 형식으로 진행되며, 이후 추가적인 스터디 및 프로젝트, 여러 구글 행사, 내년에 있을 Solution Challenge 등 023.8 ~ 2024.8 1년 동안 열심히 다양한 활동들에 참여해보려고 한다.
▼ What ?
이번 WEB 파트의 커리큘럼은 아래 교재(Spring Boot 입문서)를 따라 웹 프로그래밍의 전반적인 흐름을 이해하는 것을 목표로 진행된다.
https://wikidocs.net/book/7601
점프 투 스프링부트
점프 투 스프링부트는 Spring Boot Board(SBB)라는 이름의 게시판 서비스를 만들어가는 과정을 설명한 스프링부트 입문서이다. 자바 설치부터 시작하여 서비스 운…
wikidocs.net
https://www.notion.so/WEB-a45269a31886407c808347f9d7db4ca4
▼ 기본 세팅
1. JDK 설치
2. 스프링 부트 스타터에서 프로젝트 생성

3. GENERATE → 프로젝트 폴더(.zip) 다운 → 원하는 위치에 압축 풀기 → 인텔리제이에서 OPEN
- 프로젝트 폴더 압축 풀기 전에 해당 폴더에 git 설정 미리 해놓기! (git init)
4. 기본 세팅
- IntelliJ Gradle 대신에 자바 직접 실행 (속도 향상)

- 롬복(Lombok) 적용
- Settings → Plugins → lombok 검색 실행 (재시작)
- Settings → Annotation Processors 검색 → Enable annotation processing 체크 Apply, OK

- 롬복이 적용됐는지 확인을 위한 코드
- @Getter, @Setter라는 애너테이션을 적용하면, Getter, Setter 메서드를 추가하지 않아도 'setHello', 'setLombok', 'getHello', 'getLombok' 등의 메서드를 사용할 수 있어야 한다.
package com.gdsc.webboard;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HelloLombok {
private String hello;
private int lombok;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setHello("헬로");
helloLombok.setLombok(5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
- IntelliJ LiveReload 적용 (실시간으로 수정사항 적용)
- LiveReload 확장 프로그램 설치 후 활성화
https://chrome.google.com/webstore/detail/livereload%20%20/ciehpookapcdlakedibajeccomagbfab


▼ 브라우저 요청 처리 - 컨트롤러(Controller)
Controller
- 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스.
HelloController 클래스 생성
- @GetMapping("/hello") : 'http://localhost:8080/hello' URL 요청이 발생하면 hello 메서드가 실행된다.
(Post 방식의 URL 요청은 '@PostMapping' 애너테이션을 사용) - @ResponseBody : hello 메서드의 응답결과가 문자열 그 자체임을 나타낸다.

로컬 서버 실행
- 'WebBoardApplication' 실행하여 로컬 서버를 실행해준다.
- 브라우저 주소창에 'http://localhost:8080/hello'을 입력하면, HelloController가 작동함을 확인할 수 있다.
@RequiredArgsConstructor
- hello, lombok 속성에 final을 적용하고 롬복의 '@RequiredArgsConstructor' 애너테이션을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성 !
( 생성자를 직접 작성해준 것과 동일하다 )
➜ DI(Dependency Injection; 의존성 주입) - 스프링이 객체를 대신 생성하여 주입해준다는 것을 의미한다.
- final이 없는 속성은 생성자에 포함되지 않는다.
- final이 적용되면 Setter 메서드를 사용할 수 없기에 '@Setter'가 의미가 없다.

// 위와 동일
package com.gdsc.webboard;
import lombok.Getter;
@Getter
public class HelloLombok {
private final String hello;
private final int lombok;
public HelloLombok(String hello, int lombok) {
this.hello = hello;
this.lombok = lombok;
}
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok("헬로", 5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
▼ Why ?
올해 초부터 백엔드 개발에 관심이 생겨 스터디를 통해 Java를 공부하기 시작했다. 그리고 방학부터 Spring을 공부하기 시작했고, 동아리 내에서 진행하는 웹 개발 프로젝트 "Donggram"을 참여하면서 백엔드 개발에 필요한 웹 관련 지식(http, OS, Network, DB, etc)을 쌓는 중이다. 이렇게 개념을 공부하는 것도 중요하지만, 복학하기 전부터 대학생활을 통해 가장 얻어가고 싶었던 부분이 프로젝트 경험이었다. 프로젝트 경험뿐만 아니라 같은 분야 혹은 다른 분야의 사람들과의 커뮤니케이션을 통해서 얻어갈 수 있는 부분이 너무나도 많다고 복학하고부터 느끼고 있다. 프로젝트 경험을 쌓고 개발자를 목표로 하는 사람들과 커뮤니케이션하는 기회를 얻을 수 있는 자리가 GDSC라고 생각이 들었고, 따라서 GDSC Seoultech의 Web 파트에 지원하게 되었고 . GDSC(Google Developer Student Clubs)는 구글 개발자 기술에 관심이 있는 대학생들을 위한 커뮤니티로, 개발자로 성장하고자 하는 학부생들이 함께 활동하는 커뮤니티이다. GDSC의 첫 활동은 각 분야별로 커리큘럼에 따라 스터디 형식으로 진행되며, 이후 추가적인 스터디 및 프로젝트, 여러 구글 행사, 내년에 있을 Solution Challenge 등 023.8 ~ 2024.8 1년 동안 열심히 다양한 활동들에 참여해보려고 한다.
▼ What ?
이번 WEB 파트의 커리큘럼은 아래 교재(Spring Boot 입문서)를 따라 웹 프로그래밍의 전반적인 흐름을 이해하는 것을 목표로 진행된다.
https://wikidocs.net/book/7601
점프 투 스프링부트
점프 투 스프링부트는 Spring Boot Board(SBB)라는 이름의 게시판 서비스를 만들어가는 과정을 설명한 스프링부트 입문서이다. 자바 설치부터 시작하여 서비스 운…
wikidocs.net
https://www.notion.so/WEB-a45269a31886407c808347f9d7db4ca4
▼ 기본 세팅
1. JDK 설치
2. 스프링 부트 스타터에서 프로젝트 생성

3. GENERATE → 프로젝트 폴더(.zip) 다운 → 원하는 위치에 압축 풀기 → 인텔리제이에서 OPEN
- 프로젝트 폴더 압축 풀기 전에 해당 폴더에 git 설정 미리 해놓기! (git init)
4. 기본 세팅
- IntelliJ Gradle 대신에 자바 직접 실행 (속도 향상)

- 롬복(Lombok) 적용
- Settings → Plugins → lombok 검색 실행 (재시작)
- Settings → Annotation Processors 검색 → Enable annotation processing 체크 Apply, OK

- 롬복이 적용됐는지 확인을 위한 코드
- @Getter, @Setter라는 애너테이션을 적용하면, Getter, Setter 메서드를 추가하지 않아도 'setHello', 'setLombok', 'getHello', 'getLombok' 등의 메서드를 사용할 수 있어야 한다.
package com.gdsc.webboard;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HelloLombok {
private String hello;
private int lombok;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setHello("헬로");
helloLombok.setLombok(5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
- IntelliJ LiveReload 적용 (실시간으로 수정사항 적용)
- LiveReload 확장 프로그램 설치 후 활성화
https://chrome.google.com/webstore/detail/livereload%20%20/ciehpookapcdlakedibajeccomagbfab


▼ 브라우저 요청 처리 - 컨트롤러(Controller)
Controller
- 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스.
HelloController 클래스 생성
- @GetMapping("/hello") : 'http://localhost:8080/hello' URL 요청이 발생하면 hello 메서드가 실행된다.
(Post 방식의 URL 요청은 '@PostMapping' 애너테이션을 사용) - @ResponseBody : hello 메서드의 응답결과가 문자열 그 자체임을 나타낸다.

로컬 서버 실행
- 'WebBoardApplication' 실행하여 로컬 서버를 실행해준다.
- 브라우저 주소창에 'http://localhost:8080/hello'을 입력하면, HelloController가 작동함을 확인할 수 있다.
@RequiredArgsConstructor
- hello, lombok 속성에 final을 적용하고 롬복의 '@RequiredArgsConstructor' 애너테이션을 적용하면 해당 속성을 필요로하는 생성자가 롬복에 의해 자동으로 생성 !
( 생성자를 직접 작성해준 것과 동일하다 )
➜ DI(Dependency Injection; 의존성 주입) - 스프링이 객체를 대신 생성하여 주입해준다는 것을 의미한다.
- final이 없는 속성은 생성자에 포함되지 않는다.
- final이 적용되면 Setter 메서드를 사용할 수 없기에 '@Setter'가 의미가 없다.

// 위와 동일
package com.gdsc.webboard;
import lombok.Getter;
@Getter
public class HelloLombok {
private final String hello;
private final int lombok;
public HelloLombok(String hello, int lombok) {
this.hello = hello;
this.lombok = lombok;
}
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok("헬로", 5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}