
- 기술 정확성 : 7점 - 7점
- 코드 최적화 : 7점 - 3점
- 구조 : 7점 -???(말안해줌)
- 가독성 : 5점 - 7점
- 일정관리 및 실행 : ??점(안알려줌) - 8점
- 창의 및 혁식 : 7점 - 4점
- UIUX : 10점 - 8점
- 오류 : 7점 - 7점
- 성능 : 7점 - 7점
- 보고 및 발표 : 5점 - 5점
총평
- 일정에 맞춰 기능개발에 최선을 다했고, UI/UX에 대한 이해도가 높음
- 주문 결제에 대해 기능적으로 고민을 많이 한것같음, 전체적으로 로직/설계에 대한 노력이 보이나 팀원들끼리 역량차이가 큰것이 티가 많이 남.
Spring boot
스프링에서 파생된 서브 프로젝트 중 하나였으나, 이제는 메인 프로젝트가된 케이스로, 스프링 프레임워크 개발도구로 볼 수 있음
1) Auto Configuration(자동 설정)
2) 내장 톰캣 + 단독 실행 가능한 도구 => 별도의 서버 설정 없이도 개발이 가능하고, 실행도 가능 (다른 WAS사용도 가능)1) 기존 코드 거의 그대로 사용할 수 있어 러닝 커브는 발생 X (약간의 변동은 있음)
2) 스프링MVC에서는 JSP를 사용했지만 spring boot에서는 타임리프를 사용
\* Mybatis를 사용할 수도 있지만 앞으로 실습에서는 JPA를 사용할 예정
3) boot는 web.xml과 서블릿context.xml 설정으로 안하고 어노테이션으로 함!!!!!spring Initializr를 이용해서 간단하게 라이브러리를 추가/관리할 수 있따.


InteliJ 이용하기
build.gradle에서 lombok 테스트에서도 쓸수있도록 수정

springboot - Application.java
=> 스프링 부트의 특징으로 Application 클래스 내에 main메서드가 존재하며 해당 applicaition 자체적으로 단독 실행 할 수 있습니다.

관련 설정하기
src > main > resources > application.properties

DB연결하기
# 포트번호 : 입력하지 않으면 기본으로 80
server.port=8080
# 드라이버 입력
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
# 사용할 DB 주소
spring.datasource.url=jdbc:mariadb://localhost:3306/webdb
# 사용할 DB 접속 정보
spring.datasource.username=user
spring.datasource.password=1234
log4j 설정
logging.level.org.springframework=info
logging.level.org.fullstack4=debug
JAP이용해서 쿼리 날리는거 로그 남기도록 설정(너무 좋다...!)
spring.jpa.hibernate.ddl-auto=update
# 프로젝트 실행 시 DDL문 처리 여부 설정
#- none : DDL 진행하지 않음 (디폴트)
#- create-drop : 실행할 때 DDL 실행, 종료시에 만들어진 테이블 등등 모두 삭제
#- create : 실행할 때 마다 테이블 생성
#- update : 기존과 다르게 변경된 부분이 있을 경우 해당 테이블이 없으면 새로 생성
# 일부만 변경된 경우 alter table을 실행
# 인덱스와 외래키 자동 처리
#- validate : 변경된 부분만 알려주고 종료
spring.jpa.properties.hibernate.format_sql=true
# sql 문법을 포맷팅 해달라(들여쓰기 띄어쓰기 등) => 사람이 보기 좋게, 가독성 있게! 안하면 한줄로 주르륵 나옴
spring.jpa.show-sql=true
# 실행한 sql 문을 출력해달라
db 연결 테스트 해보기
package org.fullstack4;
import lombok.Cleanup;
import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@Log4j2
@SpringBootTest
public class DataSourceTests {
@Autowired
private DataSource dataSource;
@Test
public void testConnection() throws SQLException {
@Cleanup
Connection conn = dataSource.getConnection();
log.info("============================");
log.info("conn : " + conn);
log.info("============================");
Assertions.assertNotNull(conn);
}
}

타임리프 관련 설정
파일 > 설정 > 검사 > Thymeleaf 검색 후

=> 타임리프 문법으로 오류로 보고 에러메시지 떨구는것을 방지함.
컨트롤러 하나 만들어서 test겸 사용해보기
1. 컨트롤러 만들기
package org.fullstack4.controller;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Log4j2
@Controller
public class SampleController {
// 스프링 부트에서는 src > main > resources 폴더가 곧 spring에서 webapp과 유사!!!
// 웹 파일은 src > main > resources > templates 폴더에 넣고 사용하며
// 1. resources 파일 내부 웹문서는 브라우저에서 직졉 경로 치고 들어갈 수 없음
// 2. controller에서 경로 지정할 때 src > main > resources가 루트 경로 임!
@GetMapping("/hello")
public void hello(Model model){
model.addAttribute("msg", "Hello!");
}
}
2. html 만들어서 타임리프 사용해보기
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>
당연하게도 직접 resources 밑에있는 파일로 경로로를 쳐서 접속 불가!!! Controller등을 이용해야함.
⭐ 타임리프!!
<html lang="en" xmlns:th="http://www.thymeleaf.org">
=> 타임리프 네임스페이스를 설정하는 부분, 이부분이 있어야 타임리프 문법이라고 이해함.
(약간 jstl tablib prefix와 uri 설정해주는 느낌 )
th:속성명이런식으로 해야 함.
단, 타임리프 문법은 js로 컨트롤 불가! 타임리프로 작성된 내용이 전부 렌더링 된 후에 JS가 동작하는 원리!spring boot는 주로 타임리프 탬플릿을 사용함!
주요 특징으로는, 아래 내용이 있음
- 직접 데이터를 생성하지 않음
- 만들어진 데이터를 노출하는 형태
- 서버에서 동작해서 랜더링 하여 페이지로 보여주는 형식
즉, 랜더링 한 후 웹 브라우저에서 개발자도구로 소스를 보면 그 어디에도 th어쩌고는 없음.
3. 출력화면

⭐ 갑자기 로그인 창이 뜬다면?
spring-security 때문!!! 당황하지 말고!!!
spring-security를 없애던가- 콘솔 창에 뜬
Using generated security password:부분에 나온 비밀번호 들고 iduser로 로그인해서 들어가자!

⭐ 선생님 추천 확장 프로그램(크롬)!!
- JSON Formatter : 웹 화면에서 JSON 문서를 이쁘게 볼 수 있음
▼ 적용 전▼ 적용 후!!!
- User-Agent Switcher for Chrome : F12(개발자 도구) 안눌러도 반응형으로 화면을 볼 수 있음
- Cookie-Editor : 쿠키 잘 볼 수 있음
- Detailed SEO Extension : 검색 엔진 최적화 관련??
- User JavaScript and CSS : js / css 이쁘게 볼 수 있고, 무력화 할 수 있음
- Chrome Remote Desktop : 원격테스크탑을 크롬으로 구현해놓은 것!