타임리프는 스프링 부트의 기본 View 템플릿이다. 일반적으로 Controller에 view를 매핑해주는 방법으로 사용한다. 그러나 개발을 하다보면 코드 내에서 타임리프를 파싱해서 사용하고 싶을 때가 있다. 예를 들어, 스케쥴러 내에서 타임리프로 만든 페이지를 이메일로 발송한다든지 등의 용도가 있다. 그런 경우에 타임리프를 코드 내에서 받아오는 방법에 관한 것이다. 가장 단순한 형태의 타임리프 파서는 아래처럼 만들 수 있다. (참고로 여기에 나오는 Context 객체는 org.thymeleaf.context 패키지 내의 Context 객체이다.) thymeleaf 3.0.6.RELEASE API www.thymeleaf.org public String getTemplate(SpringTemplateEng..
멀티스레드로 요청을 보낸 횟수를 db에 기록해 집계를 할일이 있어서 비관적 락에 대해 좀 살펴보았다. 내가 궁금했던것은 @Lock(LockModeType.PESSIMISTIC_WRITE) 을 어디에 달아주냐였다. 답은 "SELECT 쿼리를 호출하는 메서드" 였다. public interface StatRepository extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) StatEntity findStatEntityById(Long id); Optional findyById(Long id); } 인터넷 예시들을 보면 jpql 같은걸 쓰기도 하는데, 그럴 필요 없이 기본 method에선 해당 메서드는 transaction 안에서만 사용해야 한다. ..
msal4j 도입중에 NoSuchMethodError가 발생했다. 원인은 azure keyvault, spring boot, msal4j에서 사용하는 api가 충돌했기 때문이다. 다행히 스프링부트 앱에 복잡한 기능이 없어서 spring boot 버전을 올려서 무난하게 해결할 수 있었다. 본인의 경우엔 jackson과 netty-common에서 충돌이 났었는데, 메서드나 클래스명이 자주 바뀌어서 버전이 변경되면 참조할 메서드와 클래스가 사라지는게 문제다. 스프링 버전과 각 api의 버전을 잘 체크해서 사용하는 수밖에 없다. https://docs.microsoft.com/en-us/azure/developer/java/sdk/troubleshooting-dependency-version-conflict T..
- Total
- Today
- Yesterday
- 공익제보단
- Request
- 오블완
- 알리
- 한국교통안전공단
- n+1
- ouath2
- k베뉴
- JPA
- Azure
- 현금영수증
- ORM
- 포상금
- 티스토리챌린지
- 토스페이
- 안전신문고
- 홈택스
- Thymeleaf
- springboot
- 알리익스프레스
- 부가가치세
- 탈세
- Java17
- springboot3
- tomcat
- Spring
- 광군제
- 전세사기
- java
- 이륜차
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |