Java15 Spring Security Java에서 로그인, 로그아웃 로그인 @Autowired private CmmLoginService userDetailsManager; UserDetails userDetails = userDetailsManager.loadUserByUsername(id); Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContext securityContext = SecurityContextHolder.getContext(); security.. 2023. 7. 16. Spring @Transactional 주의점 동작원리 에러가 발생하는순간 해당 트랜잭션에 rollback-only 마킹 → 최종 커밋을 할 때 체크되어 롤백 실행 @Transactional 어노테이션은 Proxy로 구현되어 있기 때문에 self-invocation(동일 클래스 메소드 호출)에서는 작동하지 않음. public static void main(String[] args) { save(); // 트랜잭션 안됨 } @Transactional public void save() { ... } public static void main(String[] args) { userService.save(); // 트랜잭션 적용 userService.save2(); // 트랜잭션 안됨 } @Transactional public void save() { sa.. 2023. 7. 16. Spring @Async 어노테이션 사용 JVM은 자식 Thread가 살아있을 경우 종료되지 않음. 그로 인해 allowCoreThreadTimeOut값을 true로 주지 않으면 작업이 없어도 Task Thread가 종료되지 않으므로 작업이 완료되면 Executor를 수동으로 shutdown 하던지 System.exit(0)을 통해 종료시켜야 함. queueCapacity 사이즈 안에서 현재 진행중인 Task의 개수가 corePoolSize를 넘으면 maxPoolSize 까지 사이즈를 확장 함. corePoolSize사이즈를 설정하지 않는 경우 corePoolSize를에서 값이 증가하지 않음. @EnableAsync @Configuration public class AsyncConfig { @Bean(name = "threadPoolTaskEx.. 2023. 7. 16. Java Optional 사용법 // Optional 안의 객체가 NULL이 아니여도 무조건 실행 됨. videoRepository.findById(videoId).orElse(VideoEntity::new); // Optional 안의 객체가 NULL일때만 실행 됨. videoRepository.findById(videoId).orElseGet(VideoEntity::new); // Optional 안의 객체가 NULL이면 예외가 발생 videoRepository.findById(videoId).orElseThrow(); // 값이 있으면 true isPresent(); // 값이 없으면 true isEmpty(); // 값이 있으면 실행 ifPresent(n -> System.out.println(n)); 2023. 7. 16. 이전 1 2 3 4 다음 반응형