[Thymeleaf] 타임리프 레이아웃
Front-End/Thymeleaf2024. 3. 8. 00:51[Thymeleaf] 타임리프 레이아웃

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 타임리프(Thymeleaf)에서 템플릿 레이아웃은 웹 애플리케이션의 다양한 페이지에서 공통적으로 사용되는 레이아웃 구조를 재사용할 수 있도록 도와준다. 이를 통해 개발자는 중복 코드를 줄이고, 일관된 레이아웃을 유지할 수 있다. 예를 들어서 layoutExtend.html 메인 컨텐츠 common_header(~{::title},~{::link}) 이 부분이 핵심이다. ::title 은 현재 페이지의 title 태그들을 전달한다. ::link 는 현재 페이지의 link 태그들을 전달한다. 결과 메인 컨텐츠 메인 타이틀이 전달한 부분으로 교체되었다. 공통 부분은 그대로 유지되고, 추가 부분에 전달한 들이 포함된 ..

[Thymeleaf] 템플릿 조각
Front-End/Thymeleaf2024. 3. 7. 00:27[Thymeleaf] 템플릿 조각

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 타임리프(Thymeleaf)의 템플릿 조각 기능은 HTML 문서의 특정 부분을 재사용 가능한 형태로 정의하고, 이를 다른 템플릿에서 삽입하여 사용할 수 있게 해준다. 이 기능은 중복을 줄이고, 템플릿의 유지보수를 용이하게 만들어준다. 템플릿 조각은 주로 헤더, 푸터, 네비게이션 바 등의 반복적으로 사용되는 UI 컴포넌트를 만들 때 유용하다. 템플릿 조각 정의하기 템플릿 조각은 th:fragment 속성을 사용하여 정의한다. 예를 들어, 하나의 HTML 파일 내에 여러 조각을 정의할 수 있다. 부분 포함 부분 포함 insert 부분 포함 replace 부분 포함 단순 표현식 파라미터 사용 결과 부분 포함 부분 포..

[Thymeleaf] 타임리프 기본 기능
Front-End/Thymeleaf2024. 3. 6. 00:11[Thymeleaf] 타임리프 기본 기능

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 타임리프 공식 사이트 : https://www.thymeleaf.org/ 공식 메뉴얼 - 기본 기능 : https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 공식 메뉴얼 - 스프링 통합 : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프 사용 선언 ` 기본 표현식 간단한 표현 ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...} 리터럴 ◦ 텍스트: 'one text..

[Spring DB] 예외 추상화, jdbcTemplate
Back-End/Spring2024. 3. 5. 00:08[Spring DB] 예외 추상화, jdbcTemplate

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 스프링 데이터 접근 예외 계층 스프링은 데이터 접근과 관련된 예외를 추상화해서 제공한다. 스프링은 데이터 접근 계층에 대한 수십 가지 예외를 정리해서 일관된 예외 계층을 제공한다. 각각의 예외는 특정 기술에 종속적이지 않게 설계되어 있다. 따라서 서비스 계층에서도 스프링이 제공하는 예외를 사용하면 된다. 예를 들어서 JDBC 기술을 사용하든, JPA 기술을 사용하든 스프링이 제공하는 예외를 사용하면 된다. JDBC나 JPA를 사용할 때 발생하는 예외를 스프링이 제공하는 예외로 변환해주는 역할도 스프링이 제공한다. 예외의 최고 상위는 org.springframework.dao.DataAccessException ..

[Spring DB] 예외의 이해
Back-End/Spring2024. 3. 4. 00:53[Spring DB] 예외의 이해

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 예외 계층과 체크, 언체크 예외 Object : 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다. 이 예외를 잡으면 Error 까지 잡기 때문에 Exception 예외부터 잡는다. Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 개발자는 이 예외를 잡을 필요가 없다. Exception: 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. 이 예외를 상속받으면 체크 예외가 된다. Exception과 그..

[Spring] 스프링 부트의 자동 리소스 등록
Back-End/Spring2024. 3. 3. 00:02[Spring] 스프링 부트의 자동 리소스 등록

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 테스트 코드가 아래와 같이 작성되어 있다고 가정하자. @SpringBootTest class MemberServiceV3_3Test { @Autowired MemberRepositoryV3 memberRepository; @Autowired MemberServiceV3_3 memberService; @TestConfiguration static class TestConfig { @Bean DataSource dataSource() { return new DriverManagerDataSource(URL, USERNAME, PASSWORD); //직접 데이터 소스 등록 } @Bean PlatformTransact..

[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.
Back-End/기타2024. 3. 2. 06:15[IntelliJ 오류] Web server failed to start. Port 8080 was already in use.

Mac에서 서버가 가동중인 상태로 프로젝트를 닫아버려서 Web server failed to start. Port 8080 was already in use. 오류가 발생하였다. 8080 포트가 이미 실행중인데 다시 이 포트를 사용하려고 하니 포트 충돌로 인한 오류로 보여진다. 해결 방법은 간단하다. 터미널을 열고 아래의 명령어를 입력한다. sudo lsof -i :8080 위 명령어를 입력하면 아래와 같은 메시지가 출력된다. PID라는 항목이 중요하다. PID 9894가 8080포트를 사용중인 것이다. 따라서 아래의 명령어로 8080포트를 사용중인 프로세스를 강제로 종료시킨다. kill -9 PID번호

[Spring DB] 트랜잭션 AOP
Back-End/Spring2024. 3. 2. 00:39[Spring DB] 트랜잭션 AOP

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 AOP(Aspect-Oriented Programming)는 스프링 프레임워크가 트랜잭션 관리를 위해 제공하는 선언적 트랜잭션 관리 방식이다. 이 방법을 통해 개발자는 비즈니스 로직과 트랜잭션 관리 코드를 분리할 수 있으며, 이로 인해 코드의 가독성과 유지보수성이 크게 향상된다. 스프링에서는 @Transactional 어노테이션을 사용하여 클래스나 메소드 레벨에서 트랜잭션을 선언적으로 관리할 수 있게 한다. 트랜잭션 AOP의 특징은 아래와 같다 @Transactional 어노테이션 사용: 개발자는 트랜잭션을 적용하고자 하는 메소드나 클래스에 @Transactional 어노테이션을 붙인다. 이 어노테이션..

image