본문 바로가기

IT/Spring4

스프링 일정 시간마다 기능 실행하는 법, @EnableScheduling 블로그를 만들면서 동일 IP로 접속하는 경우 하루에 한 번 조회수, 일일 방문자가 오르도록 구현했다. 접속한 아이피와 블로그 주소, 글 번호를 DB에 저장해 접속이 중복되면 조회수가 오르지 않게 했는데, 자정마다 DB를 초기화할 필요가 있어, 방법을 찾아보다 발견한 게 @EnableScheduling 어노테이션이다. 원하는 클래스에 @EnableScheduling 어노테이션을 달아주고 일정 시간 마다 반복할 메서드에 @Scheduled 어노테이션을 붙여 주면 된다. 예시 @Service @EnableScheduling public final class BlogVisitService { @Autowired VisitIpRepository visitIpRepository; /*생략*/ //일일 방문 아이피 .. 2022. 2. 6.
스프링 데이터 JPARepository UPDATE, INSERT, DELETE, DDL 사용하기 스프링으로 블로그를 만들며 일일 방문자 수를 구현 하기 위해 @Query에서 update문을 사용하려는데 not supported for DML operations ~~ 하는 오류와 마주쳤다. 이럴 때 사용해야할 어노테이션이 @Modifying 이다. @Modifying 어노테이션을 이용하면 UPDATE, INSERT, DELETE, DDL을 할 수 있도록 해준다. 예시 @Modifying @Transactional @Query(value ="UPDATE blogManager set visitToday = default",nativeQuery = true) public void resetToday(); 2022. 2. 4.
스프링 JPARepository JPQL 대신 native query 쓰기, 변수 Spring Data 가 제공하는 @Query 주석을 통해 JPQL과 native SQL을 사용할 수 있다. native query를 사용하고 싶으면, Repository 인터페이스에 아래의 예시처럼 하면 된다. (Spring JPARepository 네이티브 쿼리를 통해 변수를 입력 하는 방법) 간단한 예시 @Query(value ="SELECT * FROM blogContent WHERE id = :contentId", nativeQuery = true) BlogContent findByContentId(@Param(value="contentId", Integer contentId); 사실 위의 예시는 메소드 명명 규칙에 따라 BlogContent findById(Integer id); 로 선언만 해.. 2022. 2. 4.
_Spring_ interceptor NullpointerException 발생, 의존성 문제 스프링으로 로그인 권한을 인터셉터로 구현하는 중 NullPointerException이 발생했다. 기존에 인터셉터를 Configuration에 등록할 때 addInterceptors를 Override 하는 과정에서 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new BlogInterceptor()).order(1).addPathPatterns("/**").excludePathPatterns("/css/**", "/js/**", "/", "/member/**", "/login", "/logout", "/*.ico", "/error", "/api/item/*", "/error/**", .. 2022. 2. 4.