본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

23일차 - 점프 투 스프링부트 3장(2)

마크다운

dependencies {

    ...
    
    implementation 'org.commonmark:commonmark:0.21.0'
}

스프링부트가 내부적으로 관리하는 라이브러리에 포함되면 버전 정보가 필요없고 포함되지 않으면 버전 정보가 필요하다. 즉, commonmark는 스프링부트가 내부적으로 관리하는 라이브러리가 아니다.

스프링부트가 관리하는 라이브러리의 경우 버전 정보를 명시하지 않으면 스프링부트가 가장 궁합이 잘 맞는 버전으로 자동 선택한다. 따라서 라이브러리들의 호환성을 생각한다면 버전 정보는 따로 입력하지 않는 편이 좋다.


마크다운 컴포넌트

@Component
public class CommonUtil {
    public String markdown(String markdown) {
        Parser parser = Parser.builder().build();
        Node document = parser.parse(markdown);
        HtmlRenderer renderer = HtmlRenderer.builder().build();
        return renderer.render(document);
    }
}

markdown 메서드는 마크다운 텍스트를 HTML 문서로 변환하여 리턴한다.


마크다운 적용

<div class="card-text" th:utext="${@commonUtil.markdown(question.content)}"></div>

마크다운으로 변환된 HTML 문서를 제대로 표시하려면 이스케이프 처리를 하지 않고 출력하는 th:utext를 사용해야 한다.


JPA - Specification

보다 정교한 쿼리의 작성을 도와주는 JPA의 도구

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications

 

Spring Data JPA - Reference Documentation

Example 119. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io


검색할 때 팁!

site:getbootstrap.kr alert

으로 검색하면 alert에 대한 getbootstrap.kr의 검색 결과를 보여준다.