API 요청의 처리가 오래 걸리게 되면, java.net.SocketTimeoutException 가 발생합니다. tomcat 문서를 보면, defualt 값은 1분으로 되어 있습니다.( tomcat 8.5 버전 기준 ) Spring의 property 파일( application.yaml )의 timeout 시간을 늘려주면 됩니다. -1을 설정하면 timeout이 무한대가 되어 timeout이 발생하지 않습니다. 그렇지 않으면 ms 단위로 원하는 시간을 입력해주면 됩니다. server: tomcat: connection-timeout: -1
목차 ComponentScan 이란? @ComponentScan은 스프링부트에서 제공하는 어노테이션으로써, 스프링 빈으로 만들기 위한 컴포넌트를 스캔할 곳을 설정하는 역할을 합니다. 스프링에서는 여러 빈들을 관리하면서 의존성을 주입해 주는데 이때 전체 코드에서 컴포넌트를 찾아 빈을 생성하는 것이 아니라 범위를 지정하여 그 범위 안에서 어노테이션 된 클래스들을 찾아 빈을 생성 및 관리합니다. 빈으로 등록하기 위해 스캔하는 어노테이션은 @Component, @Repository, @Service, @Controller, @Configuration 가 있습니다. com.example.component.SlideComponent와 com.example.component2.BarComponent가 있는데 둘은 서..
property에 있는 값을 @Value를 사용하여 멤버 변수에 값을 Injection하여 자주 사용을 합니다. 이때 static 멤버에 Injection을 하려고 하면 되지가 않습니다. String 변수를 예로 들면, null로 되어있습니다. 이유는 Spring에서 @Value 가 static field에 대해 지원하지 않기 때문입니다. public class Inject { @Value("${file.path}") private static String PATH; // null } static 변수에 Injection을 하려면, 아래와 같이 setter injection으로 값을 할당할 수 있습니다. public class Inject { private static String PATH; @Value..
ResourceLoader는 Spring Boot에서 resources 폴더 아래에 있는 리소스 파일을 읽어오기 위해 사용하는 클래스 입니다. 아래와 같이 classpath:로 경로를 입력하면 해당 경로에 있는 리소스를 읽어오고 Resource 객체로 full path까지 가져올 수 있습니다. ResourceLoader resourceLoader; Resource resource = resourceLoader.getResource("classpath:" + schemaFilePath); resource.getURI().getPath(); 여기서 classpath: 는 target의 classes를 root로 하는 경로 입니다. chemaFilePath는 schema/ParquetSchema 값을 넣어주면..
starter-test 의존성도 잘 추가가 되어있고, 테스트 코드도 test/java 경로에 잘 들어가 있는데, IntelliJ에서 아래 테스트 코드를 수행하면 junit 패키지를 찾지 못한다는 에러가 발생하는 경우가 있습니다. import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.junit4.SpringRunner; import static org...
목차 1. 로깅 프레임워크 SLF4J SLF4J는 Simple Logging Facade의 약자로 프레임워크라기 보다는 여러 로깅 프레임워크의 인터페이스 역활을 합니다. 로깅 프레임워크는 SLF4J 규약에 맞게 구현을 하고, 개발자는 SLF4J 인터페이스를 호출하여 원하는 프레임워크를 사용하면 됩니다. 직접 로깅 프레임워크를 사용하지 않고, SLF4J라는 인터페이스를 사용하는 이유는 여러 이유로 로깅 프레임워크를 변경하게 될 경우 로깅 프레임워크 의존성만 변경하면 코드 변경 없이 전환이 가능하기 때문입니다. Log4j 가장 오래된 로깅 프레임워크지만, 15년도 부터 더 이상 개발이 되지 않고 있는 프레임워크로 사용하지 않는 것이 좋습니다. Logback Log4j 이후에 출시한 프레임워크로 성능이 더 향..
Springboot에서 컨트롤러를 개발하면, JSON으로 값을 받아 Java Object에 값을 저장하고, 반대로 Java Object 값을 JSON 으로 변환해서 응답으로 주는 경우가 많다.( 또는 XML ) 직접 String 으로 JSON 을 만들거나, JSON 값을 Java Object에 일일히 값을 설정해줘도 되지만 Spring과 Jackson 라이브러리를 함께 사용하면, JSON POJO 간 변환을 알아서 해준다. POJO : Plain Old Java Object의 약자로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 순수? 자바 오브젝트 이다. Jackson : Java를 위한 고성능 JSON 라이브러리이다. Spring에서는 기본으로 탑재가 되어있다. POJO 먼저, JSON 값을 저..
Springboot 내장 Tomcat Springboot는 기본적으로 내장된 웹서버를 사용한다. 내장된 웹서버인 Tomcat의 버전을 확인하는 방법은 2가지가 있다. 첫 번째는, 사용하고 있는 라이브러리의 의존성을 MVNRepository 에서 확인하는 것이고, 두 번째는, 프로젝트의 외부 라이브러리에 tomcat 버전을 확인하는 방법이다. MVN Repository 확인 dependencies { implementation 'org.springframework.boot:spring-boot-starter' } 프로젝트에 외부 라이브러리 목록을 보면, 아래와 같이 2.1.1 라이브러리를 사용하고 있음을 알 수 있다. 그러면 MVNRepositry에 가서 spring-boot-starter-tomcat 2..
설정파일에 비밀번호와 같은 민감정보를 저장하는 경우가 있는데, 보안을 위해 암호화 하는 방법을 알아보겠다. 암호화에는 jasypt( Java Simplified Encryption ) 자바 암호화 라이브러리를 사용하였다. 먼저, Springboot 용 라이브러리 및 BouncyCastle 라이브러리 를 추가한다. compile (group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '2.1.1') compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.61' Configuration 클래스에 @EnableEncryptableProperties를 ..
@EnableScheduling @SpringBootApplication public class ScheduleApplication { public static void main(String[] args) { SpringApplication.run(ScheduleApplication.class, args); } } 먼저, background task executor 를 생성하기 위해 @EnableScheduling 을 추가합니다. 이 annotation 이 없으면, @Scheduled에 의해 task가 동작하지 않습니다. @Component @Log public class ScheduledTasks { @Scheduled(fixedDelay = 10000) public void runEvery10Sec(..
- Total
- Today
- Yesterday
- Java
- Git
- SpringBoot
- Postman
- AWS
- mac
- Index
- JPA
- gradle
- scala
- Size
- tomcat
- apm
- Filter
- JSON
- docker
- spring boot
- maven
- Kibana
- Log
- elasticsearch
- Linux
- Container
- install
- spring
- logstash
- intellij
- error
- Spark
- plugin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |