일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- Spring Batch
- elasticsearch
- linux
- jsp
- springboot
- jenkins
- java
- Design Patterns
- javascript
- db
- MySQL
- Git
- it
- Gradle
- AWS
- ubuntu
- ReactJS
- Web Server
- tool
- devops
- 요리
- php
- laravel
- 맛집
- Spring
- IntelliJ
- Spring Boot
- Oracle
- redis
- JVM
- Today
- Total
목록Java & Kotlin/Spring (76)
아무거나
DB 관련 로그 의존성 추가 [build.gradle] ... // DB Log implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' ... ../resources/log4jdbc.log4j2.properties 파일 생성 [log4jdbc.log4j2.properties] # log4jdbc spy의 로그 이벤트를 slf4j를 통해 처리 log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator # 로그를 표시할 줄의 제한 0은 무제한 log4jdbc.dump.sql.maxlinelength=0 # log4jdbc의 드라이브 클래스 설정 log4jdbc..
Ehcache build.gradle ... dependencies { ... // 캐시관련 설정을 편리하게 지원해주는 패키지 (CacheManager, EhCacheManagerFactoryBean 등의 bean 생성을 직접 안할수 있음) implementation 'org.springframework.boot:spring-boot-starter-cache' // Ehcache implementation group: 'net.sf.ehcache', name: 'ehcache', version: '2.10.6' } ... EhCache 설정 체크 관련 Component 추가 (CommandLineRunner를 통해 Application 실행시 무조건 run() 이 실행되도록 하여 CacheManager를..
Library Document Jasypt를 활용한 Application Property 암호화 Application.yml 에다 보통 DB 접속정보등의 데이터가 기재되어있다. 이러한 내용을 외부에서 탈취해갈 위험성을 대비하여 jasypt를 활용하여 보안을 강화하자 http://www.jasypt.org/download.html 에서 jasypt 다운 (1.9.2 버전 기준) 압축 풀고 cmd에서 bin 폴더로 이동 (./file/jasypt-1.9.3/bin) encrypt input="bkjeontest!@" password="bkjeon!@" algorithm="PBEWITHMD5ANDDES" (온라인 암/복호화 사이트 https://www.devglan.com/online-tools/jasypt-..
Lombok 사용시 주의사항 (1.16 기준) lombok.config를 통하여 애노테이션 사용금지 및 각종 설정 config.stopBubbling = true lombok.data.flagUsage=error lombok.value.flagUsage=error lombok.val.flagUsage=error lombok.var.flagUsage=error lombok.nonNull.flagUsage=error lombok.allArgsConstructor.flagUsage=error lombok.requiredArgsConstructor.flagUsage=error lombok.cleanup.flagUsage=error lombok.sneakyThrows.flagUsage=error lombok.sy..
Intellij Lombok 사용 (Mac) Preference -> Plugins -> Browse Repositories 에서 Lombok Plugin 추가 Prepference -> Build, Execution, Deployment -> Compiler -> Annotation Processors "Enable Annotation Processors" 체크 Lombok Annotations @Getter @Setter Getter / Setter Method 생성(모든 필드의 타입에 맞추어 생성) Class에 적용하면 static을 제외한 모든 필드에 적용 AccessLevel 을 명시하지 않으면 public 종류: PUBLIC, PROTECTED, PACKAGE, PRIVATE, NONE 특정 ..
Field Injection이 아닌 Constructor Injection 사용하자 평소 개발시에 스프링쪽이라든지 타 포스팅을 참고하여 Field Injection이 아닌 Constructor Injection 을 지향하게 되었다. 하지만 그 당시 간략히 이해만하고 넘어간지라 최근에 해당 내용에 대해 설명을 해야할 일이 생겼을 때 간략한 내용만 전달하게 되어서 좀 더 자세한 내용을 다시 복습하고자 포스팅을 작성하게 된다. [의존성 주입의 종류] Setter Injection public class ExampleClass { @Autowired private ExampleService1 exampleService1; @Autowired private ExampleService2 exampleService2..
특정 패키지 내부의 원하는 클래스에 특정 메소드만 지정하여 Aspect 적용 의존성 추가 [build.gradle] ... implementation 'org.springframework.boot:spring-boot-starter-aop' ... Bean 등록 [Application.java] @Bean public SelectLogAspect selectLogAspect() { return new SelectLogAspect(); } Controller 생성 [CrudController.java] import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.a..
Spring Boot + Mybatis + Mysql 을 활용한 계층형(=hierarchy) 게시판 구현 테이블 설계 CREATE TABLE `tb_board` ( `BOARD_NO` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '게시판 고유 값', `GROUP_NO` int(11) unsigned NOT NULL COMMENT '게시판 그룹번호 (원글은 자신의 값)', `SORT_SEQ` int(2) unsigned NOT NULL COMMENT '게시글 정렬 순번', `BOARD_LVL` int(2) unsigned NOT NULL COMMENT '게시글 레벨(depth)', `BOARD_TITLE` varchar(45) NOT NULL COMMENT '게시..
* 참고로 해당 포스팅은 Aspect가 gradle 디펜던시에 추가되어있다는 가정하에 진행 원하는 패키지 경로 안에 그 하위에 *Service로 끝나는 파일들만 Aspect 적용 import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Component @Aspec..
일반적으로 log4j를 사용하는 코드를 보자. log.debug("error message example") 위와 같은 방식으로 사용하는 경우가 있으며 아래 코드를 보자 if (log.isDebugEnabled()) { log.debug("error message example"); } 이렇게 되면 두번이나 체크하게 될텐데 효과적일까? 라는 의문을 갖게 된다. 예를 들어 log.debug("Entry Number: " + i + ", Value: " + String.valueOf(entry[i])) 이런식으로 디버깅을 사용한다고 하자. 이러면 메세지 파라미터를 생성할 때 String 연산들이 일어나게 되며 해당 작업은 메세지 로깅여부에 상관없이 항상 발생하게 되어 파라미터 생성 비용을 발생시킬 수 있다...