본문 바로가기
반응형

개발242

SpringBoot application.yml 리스트, 객체로 불러오기(@ConfigurationProperties) SpringBoot에서 application.yml 내용을 가져와서 사용해야하는 경우 일반적으로 String, Integer이 아닌 List나 객체 형태로 가져오는 방법을 정리해본다. List 불러오기 application.yml에서 아래와 같이 ",'로 구분해서 각 항목에 여러 개의 item을 등록한다. 한줄로 ","로만 구분해서 작성하면 파악하기가 쉽지 않은 경우도 있는데 이럴 때는 구분자는 동일하게 하고 "," 멀티라인으로 작성해도 된다. 간단히 테스트 케이스로 application.yml에 선언한 내용을 출력해본다. 결과는 아래와 같이 잘 가져오고 출력된다. 객체 불러오기 applicaton.yml 설정 내용을 각각 개별적으로 가져오기 보다 여러 개를 하나의 세트형태로 가져와야 하는 경우 객체 형.. 2021. 12. 9.
IntelliJ Tomcat 설정 IntelliJ > Preferences 에서 아래 메뉴를 통해 로컬의 Tomcat서버를 등록한다. 프로젝트의 Run Configuration을 실행한다. Run/Debug Configurations 에서 "+" 눌러서 Tomcat Server > Local 선택 아래와 같이 확인이 가능하다 "하단에 Warning: No artifacts marked for deployment" 가 뜨는데 "Fix" 버튼을 클릭하거나, 'Deployment' 탭에서 "+"버튼을 클릭하고 'Artifact...'를 선택 후 war exploded를 선택 - war exploded는 서버 재시작없이 어플리케이션 갱신 가능함, war 패키지 형태가 아닌 압축 해제 후 배포를 의미함 Application Context Path.. 2021. 12. 9.
SpringBoot 외장Tomcat과 SpringBootServletInitializer SpringBoot를 사용하면 일반적으로 내장Tomcat을 사용한 jar로 배포를 한다. 가끔 상황에 따라서 외장Tomcat으로 war형태로 배포를 진행해야하는 경우가 있는데 이때 SpringBootServletInitializer가 필요하다. @SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder app.. 2021. 12. 9.
Jacoco 동적 분석 테스트 및 Jenkins 연동 jacoco(Java Code Coverage) 분석 방법 테스트 코드를 잘 작성했다면 maven, gradle의 jacoco plugin을 사용해서도 테스트 커버리지를 체크 가능하지만, 어플리케이션 구동 시켜놓은 상태에서 기능들에 대해 테스트 수행을 했는지 체크하기 위해 was agent 형식으로도 jacoco를 적용가능하다. 1. jacoco 다운로드 https://www.eclemma.org/jacoco/ 에서 .zip 파일 다운로드/압축풀기 lib/ 디렉토리에는 jacocoagent.jar, jacococli.jar 파일들 사용할 예정이다. 2. was 실행(with agent) 어플리케이션 war를 실행 할 때 jacoco관련 -javaagent 옵션을 추가형 실행한다. java -javaage.. 2021. 12. 8.
java 어플리케이션 실행 시 JVM args(JAVA_OPTS) 적용 java 어플리케이션 콘솔에서 실행 시 jvm argument를 설정하는 방법을 정리해본다. SpringBoot java -jar 사이에 아래와 같이 java [jvm옵션] -jar app.jar 을 설정하면 된다. java -javaagent:path/to/applicationinsights-agent-3.2.3.jar -jar jvm옵션(ex. javaagent)에 어떤 문자나 길이 등으로 'no matches found: -javaagent: ... ' 뜨면서 실행 안될 때가 있는데 이럴 때는 jvm옵션을 따옴표("")로 묶어주면 정상 실행이 된다. java -javaagent:"path/to/applicationinsights-agent-3.2.3.jar" -jar Docker Docker 컨테이.. 2021. 12. 8.
SpringBoot Jsaypt 사용 application.yml 암호화 Jsaypt(Java Simplified Encryption) 암호화 라이브러리 적용 테스트 기본 사용 Maven Dependency 추가 com.github.ulisesbocchio jasypt-spring-boot-starter 2.0.0 라이브러리 테스트 @RunWith(SpringRunner.class) @SpringBootTest public class JasyptTest { Logger log = (Logger) LoggerFactory.getLogger(JasyptTest.class); @Test public void simpleEncTest() { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); SimpleStrin.. 2021. 12. 3.
SpringBoot jar를 타 프로젝트에 Dependency 라이브러리로 추가 SpringBoot로 개발된 프로젝트를 다른 프로젝트에 jar Dependency로 종속성을 걸어서 사용할 경우 실제 빌드하고 실행을 하면 jar내에 있는 클래스들에 대해 ClassNotFoundException이 발생한다. 이유는 SpringBoot는 jar를 생성할 때 기본적으로 독립적으로 실행이 가능한 jar를 생성하기 때문에 jar 내부를 보면 BOOT-INF 디렉토리가 생성되고 필요한 클래스 및 의존 라이브러리들이 내부에 존재 함. jar가 위와 같은 구조에서는 독립적인 실행은 가능하지만, 다른 프로젝트에 의존성 설정하고 라이브러리로 사용은 불가능하다 해결 방법은 pom.xml에서 spring-boot-maven-plugin 의 repackage 설정을 추가한다. org.springframewo.. 2021. 12. 3.
SonarQube 설치 및 구성 SonarQube - 코드 정적분석 툴(Tool) - 정적분석: 실제 프로그램을 실행하지 않고 코드의 패턴을 바탕으로 Bug, Code Smell, 보안취약점 등을 분석 - 기타 정적분석 툴: PMD, FindBugs, CheckStyle 다운로드 및 설치 - JDK 1.8 기준 테스트 wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip // non-root user(root user로 실행 불가) unzip ./sonarqube-7.8.zip // 실행 옵션 [console | start | stop | force-stop | restart | status | dump] sonarqube-7.8/bin/linux-.. 2021. 11. 30.
반응형