본문 바로가기
JavaWeb

자바 웹 공부 41 - Eclipse DB 구현(복습겸) + SpringBoot 환경 세팅

by 넴넴L 2023. 2. 27.
728x90

 

정말 오랜만에 Eclipse를 들어가서 Project를 새로 만들자

저번주에 만든 거 기반으로 만들 것이다.

 

우선 유저부터

뭐 하는 녀석인지 설명을(주석) 적어놓자

 

빈 곳 우클릭 -> Source -> construnctor ~ using ~ field 

아래에 빈 생성자도 하나 만들어주고

 

똑같이 toString, Getter/Setter도 만들어주자

 

만들면 새로운 Class를 만들어주자 BoardEntity라고 했다.

이렇게 해주고

Source로 가서 Constructor using Fields, toString, Getter/Setter, 빈 BoardEntity를 만들어주자

빈 BoardEntity는 이렇다

 

나머지도 다 만들어야 하지만 Eclipse에서는 사용하지 않을 것이다. 단순한 복습이라서 해본 것이다.

 

 

복습

controller - 검증 처리, 입력 검증 (서비스 돌리기 전)
service - 프로세스 가동. 필요한 데이터를 repository에서 가져 옴
repository - DB접근과 관련. service에서 필요한 데이터를 보내 줌(DAO)

layer과 layer 통신할 적에 오브젝트는 DTO

web server와 was 통신할 때도 DTO를 사용
was와 DB서버 통신할 때는 Entity를 사용

순서
controller -> service -> repository 

 

Framework

- 프레임워크
- 소프트웨어나 애플리케이션 개발을 간단하게 해주는 뼈대

장점
1. 개발에 필요한 최소한의 기능을 제공하기 때문에 모든 기능을 작성할 필요가 없음
2. 애플리케이션 개발에 필요한 시간과 비용을 줄일 수 있음

단점
- 프레임워크를 사용한 개발은 해당 프레임워크에 대한 이해가 선행적으로 필요함

 

Spring Framework
- 자바 개발 환경에서 사용되는 프레임워크

스프링부트(Spring Boot)
- 스프링 애플리케이션을 복잡한 설정 없이 빠르게 작성하는 기능을 제공

스프링 프로젝트(Spring Project)
1. 스프링 MVC (Spring MVC) : 웹 애플리케이션을 간단하게 생성하는 기능을 제공
2. 스프링 데이터 (Spring Data) : 데이터 접근에 관한 기능을 제공
3. 스프링 배치 (Spring Batch) : 배치 처리 기능을 제공
4. 스피링시큐리티 (Spring Security) : 인증 / 인가 기능을 제공

스프링 코어(Spring Core)
1. 스프링 DI (Spring Dependency Injection) : 의존성 주입 기능을 제공 스프링
2. AOP (Spring Aspect Oriented Programming) : 관점 지향 프로그래밍 기능을 제공

 

Servlet Container

참고용 사진

 

Dispatcher Servlet

참고용 사진

특정한 Request에 path가 오면 실행한다.

 

장점
1. HttpServlet을 상속받지 않아도 됨
2. doGet Override 불필요
3. HttpServletRequest를 직접 파싱 하지 않아도 됨
4. HttpServletResponse를 작성하지 않아도 됨

 이제 개발환경 세팅을 해보자

 

https://start.spring.io/

이쪽으로 들어가면

이런 화면이 뜬다.

버전은 2.7.9를 사용할 거고 Metadata는 알아서 적어주자

 

이렇게 만들고 dependencies add를 눌러서 위에 web이라고 치고

Spring web, JPA, mySQL, lombok(자바 어노테이션)을 클릭

끝났다면 GENERATE 하고 압축파일을 풀어주자

나는 C드라이브에 그냥 풀었다

풀어준 뒤 Eclipse로 가서

Package Explorer -> import -> Gradle -> Existing -> next -> show 체크 해제 -> next -> Browse -> 저장한 board 폴더 선택

-> next -> override workspace settings체크 -> next를 해주면

이렇게 하고 Finish를 눌러주자

그러면 Finish가 안 된다.. Eclipse에 만들었던 Board 파일을 없애주고 다시 해주자

 

없애주고 똑같이 한 다음 finish를 눌러주면 잘 된다.

src/main/resource -> application.properties로 가서

 

server.port=4040 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/board? serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=root

위의 글을 복사해서 넣어주는데 일단 저기서 3306 뒤에 board를 peed로 바꿔주자

 

그리고 run 해주면

이렇게 뜰 거다 start~는 맨 아래줄이다.

 

끌 때는 우측 클릭하고 disconnect all이 안 뜰 때까지 눌러줘야 한다.

그리고 켜진 상태에서 chrome에서 localhost:4040을 주소창에 입력해 주면

이렇게 뜬다. 당연히 끈 상태에서 들어가면 페이지를 찾을 수 없다고 뜰 것이다.

boardApplication에 가면 이런 코드가 있을 텐데

 

@SpringBootApplication
- 해당 어노테이션이 달린 클래스가 있는 패키지를 베이스 패키지로 간주
- 스프링이 해당 베이스 패키지와 그 하위 패키지에서 Spring Bean을 찾아 스프링의 의존성 주입 컨테이너
오브젝트, 즉 ApplicationContext에 등록할 수 있도록 하며, 스프링은 애플리케이션 실행 중 어떤 오브젝트가 필요한 경우, 의존하는 다른 오브젝트를 찾아 연결해줌
- 자동으로 다른 오브젝트를 찾아 연결해 주는 과정은 @Autowired 어노테이션이 수행함
- @Component 어노테이션으로 Spring Bean을 등록함
- Spring Bean : Spring IoC 컨테이너가 관리하는 자바 객체
(ApplicationContext에 의해 만들어지고 관리되는 객체)

https://mvnrepository.com/

여기에 들어가서 swagger를 검색하고

usages가 제일 많은 것에 들어가 1.6.9 클릭 -> imple~1.6.9를 복사 후 

이렇게 넣어주자

그리고 board -> gradle -> refresh gradle project를 눌러주면

설치할 필요 없이 간단하게 추가가 된다.