본문 바로가기
반응형

SpringBoot34

addViewControllers()로 불필요 Controller 로직 제거 Controller에서 별다른 로직없이 단순 view 매핑 및 redirect가 필요한 경우 addViewControllers() 메소를 Override하여 설정 1. View 호출 @GetMapping("/hello") public String hello() { return "hello"; } 위와 같은 Controller 로직은 아래와 같이 WebConfig addViewController(), setViewName()으로 설정 가능 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registr.. 2022. 1. 10.
SpringBoot Multi Servlet 추가 MVC설정 분리 테스트 SpringBoot 서블릿을 추가하기 위해 ServletRegistrationBean을 등록하여 테스트 진행 프로젝트 기본 구조는 아래와 같이 잡았고 my패키지에 있는 컨트롤러(MyController) 및 MVC 설정(MyWebConfig)을 분리하고자 한다. 어플리케이션 메인에서는 기본 서블릿에 포함되지 않게 MyController, MyWebConfig를 컴포넌트 스캔에서 제외했다. 그리고 ServletRegistrationBean을 등록하여 MyWebConfig를 context에 등록하고 기타 서블릿 설정을 한다. 참고로 addUrlMappings에서 "/my/**" 와 같이 "*"는 동작하지 않아 MyController의 모든 URL을 등록해줬다. @SpringBootApplication @Com.. 2022. 1. 4.
SpringBoot 설정에 따른 동적 빈 생성 SpringBoot application.yml 설정에 따라 빈을 동적으로 등록/제외해야 하는 경우 @ConditionalOnProperty 어노테이션을 사용해 간단히 처리 할 수 있다. 예를 들어 아래와 같이 application.yaml있고, 'sample.enable' 가 true일 경우만 특정 빈을 생성해야 하는 경우 아래 예시와 같이 설정을 한다. 아래와 같이 선언하게 되면 sample.enable이 true인 경우 SampleProp빈이 Spring Context에 등록이 된다. @Bean @ConditionalOnProperty(value = "sample.enable", havingValue = "true", matchIfMissing = false) public SampleProp sam.. 2021. 12. 9.
SpringBoot application.yml 리스트, 객체로 불러오기(@ConfigurationProperties) SpringBoot에서 application.yml 내용을 가져와서 사용해야하는 경우 일반적으로 String, Integer이 아닌 List나 객체 형태로 가져오는 방법을 정리해본다. List 불러오기 application.yml에서 아래와 같이 ",'로 구분해서 각 항목에 여러 개의 item을 등록한다. 한줄로 ","로만 구분해서 작성하면 파악하기가 쉽지 않은 경우도 있는데 이럴 때는 구분자는 동일하게 하고 "," 멀티라인으로 작성해도 된다. 간단히 테스트 케이스로 application.yml에 선언한 내용을 출력해본다. 결과는 아래와 같이 잘 가져오고 출력된다. 객체 불러오기 applicaton.yml 설정 내용을 각각 개별적으로 가져오기 보다 여러 개를 하나의 세트형태로 가져와야 하는 경우 객체 형.. 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.
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.
반응형