스프링 부트 JPA 의존성 추가
jdbc가 포함되어 있어서 jdbc를 따로 종속시키지 않아도 된다.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
</html>
meta 태그들 의미
<head> 섹션에 추가되는 의미
- 메타데이터를 정의하는 데 사용
- 주로 브라우저에게 정보 제공
- 렌더링 방식 지정
해당 태그를 보면
charset : 문자 인코딩 방식 지정
viewport : 반응형 웹 디자인을 위해 모바일 장치에서의 뷰포트 설정한 것
http-equiv : HTTP 헤더와 관련된 정보를 설정, 브라우저 렌더링 엔진을 지정 가능
그럼 현재 나타내고 있는 <meta http-equiv="X-UA-Compatible" content="ie=edge">
이 부분은 최신의 Internet Explorer를 말하는것 여기서 edge는 마이크로소프트 엣지를 말하는 게 아니라 최신 버전을 말하는 것.
크롬은 기본적으로 최신 렌더링 엔진을 사용하므로 , 특별한 설정이 필요 없다.
타임리프 사용하면 html 태그들에 구문에 밑줄이 생기는게 거슬리므로
해당 옵션을 변경해서 안나오게 할 수 있음
<!--/* th:if="${condition}" */-->
<p>This paragraph is conditionally rendered.</p>
타임리프 사용시 주석을 이런 식으로 해야 함
html 하던 방식으로 <!-- 로 하면 브라우저에서 잘못 해석될 수 있음
<ul>
<li th:each="str,status: ${list}">
<th:block th:switch="${status.index % 3}">
<span th:case="0">0</span>
<span th:case="1">1</span>
<span th:case="2">2</span>
</th:block>
</li>
</ul>
타임리프 컨트롤러에서 list를 받고
switch문을 작성하면 index값이 3으로 나눴을 때 나머지가 0이면 th:case="0"을 출력
list가 4개면 0,1,2,0 -> 처럼 출력 됨
@EnableJpaAuditing
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// ...
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
@SpringBootApplication
@EnableJpaAuditing
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(B01Application.class, args);
}
}
@EnableJpaAuditing 어노테이션
Spring Data JPA에서 제공하는 기능 중 하나
@Entity 어노테이션 지정된 엔터티 클래스 필드 중 , @CreatedDate와 @LastModifedDate어노테이션 지정된 필드에 값을 자동으로 업데이트함.
@SpringBootApplication에 위치하고 , 데이터를 추적하는데 사용 가능
IntStream
java 8에서 추가된 인터페이스 , 기본 자료형 'int' 값을 스트림 형태로 다룰 수 있음
스트림 : 함수형 프로그래밍 영감 받아 , 데이터를 처리하기 위한 간결한 API를 제공
import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;
public class IntStreamExample {
public static void main(String[] args) {
// 1. 기본적인 IntStream 생성
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
// 2. 연산 수행 및 출력
System.out.println("Original IntStream:");
intStream.forEach(System.out::println);
// 3. 다양한 연산 수행 예시
IntStream rangeStream = IntStream.range(1, 6); // 1부터 5까지의 범위
int sum = rangeStream.sum();
System.out.println("Sum: " + sum);
IntStream mapStream = IntStream.range(1, 6).map(x -> x * 2); // 각 요소에 2를 곱함
System.out.println("Mapped IntStream:");
mapStream.forEach(System.out::println);
// 4. 통계 정보 얻기
IntStream statisticsStream = IntStream.range(1, 6);
IntSummaryStatistics stats = statisticsStream.summaryStatistics();
System.out.println("Statistics: " + stats);
}
}
log4j2 오류
스프링 부트 버전이 2.x -> 3.x로 올라가면서 dependencies에 추가해야 되는 부분이 생김
developmentOnly 'org.springframework.boot:spring-boot-devtools'
Sping Boot 애플리케이션의 개발 시 개발 환경에서 빠른 재시작과 리로드를 지원
기존에 있는 logging을 제대로 삭제하지 못하고 lombok을 사용해서 제대로 가져오지 못하는 것 같음(정확한 이유X)
해당 설정한 후 다시 빌드하고 돌아가면 또 문제없게 테스트 코드가 작동하는 것을 볼 수 있음
해당 의존성을 사용하면 클래스 파일 변경 감지를 자동으로해주고, 캐시 자동 비활성화 , 라이브 리로딩,application.properties 변경되면 바로 다시 읽어들이는 등 전체적으로 불편함을 감소시켜준다.
꼬인 프로젝트 의존성을 풀어주는 것 같다(내 생각).