Back-end/Spring-핵심& webMVC 24

Spring MVC <component-scan>, <annotation-config>, <annotation-driven>

Spring MVC framework provides different configuration elements that are helping or instructing the Spring container to effectively manage the beans and inject the beans when required. 1. 있으면 필요없음. - spring version2.5에 나왔다. - context:component-scan element in the spring configuration file would eliminate the need for declaring all the beans in the XML files. (과거에는 XML file에 bean들 일일이 등록했어야 했다.) -..

Web.xml, DispatcherServlet, ContextLoaderListener 각각의 역할 및 관계

1. DispatcherServlet : - FirstController로 한 개의 WebApplicationContext를 가지며, 또한 여러 개의 DispatcherServlet 가질 수 있다. - 그러나, DispatcherServlet 간(각각 별도의*. xml파일 설정)에는 객체 서로 공유되지 않는다. - 순서는 순서으로 준다. 2. ContextLoaderListener : - DispatcherServlet에서 공통 빈을 필요로 하는 경우 ContextLoaderListener에 설정해주면 된다.(아래 예시) - 통상적으로 여기에는 datasource, springsecurity 등을 설정해준다. contextConfigLocation /WEB-INF/spring/appServlet/root..

DTO(DataTransferObject) vs. VO(Value Object)

1. DTO와 VO 차이는 무엇인가? 1. DTO (데이터 전달용 객체) Data Transfer Object 각 계층(레이어) 간 데이터 교환을 위한 객체 (Controller, Service) 값이 변할 수 있다. DTO dto1(1)!= DTO dto2(1) 데이터 접근 이외의 기능을 가지지 않음(정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있음) 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 보유한 클래스 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다..? (대신 생성자를 통해 속성 값들을 초기화 하게 만들어 불변 객체로 만들면 DTO가 전달 과정 중에 변조되지 않음을 보장할 수 있다.) 속성값이 모두 ..

SpringBootServletInitializer

War vs. Jar 배포상의 차이 @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SuperApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SuperApplication.class); } } 보통 SpringBoot 웹 애플리케이션을 배포할 때는 embedded..

Springboot Swagger- SpringSecurity 연결 설정

1. SpringSecurity- Swagger2 설정 연결 https://it-recording.tistory.com/64 [Spring] Spring Security + Swagger2 연결 Spring을 사용한 프로젝트를 할 때 API를 하나하나 적는 것은 많은 시간과 노력을 요구한다. 이에 자동화 된 API 툴을 제공하는데 그 중 Swagger를 연결하는 방법을 알아보겠다. (+마주했던 오류와 함 it-recording.tistory.com 2. SpringBoot - Swagger 설정 https://velog.io/@borab/Spring-boot-Swagger-%EC%84%A4%EC%A0%95-gradle Spring boot Swagger 설정 (gradle) 🐏 ❗ 스프링 부트 swagg..

비동기 처리를 위한 ThreadPoolTaskExcutor

1. ThreadPoolTaskExcutor 스프링에서 제공해주는 클래스로 org.springframework.scheduling.concurrent패키지에 속하며 기본생성자 하나만 존재한다. 이는 쓰레드풀을 이용하여 멀티쓰레드 구현을 쉽게 해주는 클래스이다. 2. 관련 메서드 1) setCorePoolSize : corePoolSize값을 설정한다. 이는 동시에 실행시킬 쓰레드의 개수를 의미하며 default값은 1이다. 2) setAllowCoreThreadTimeOut : 코어 쓰레드의 타임아웃을 허용할 것인지에 대한 세터 메서드로 true로 설정할 경우 코어 쓰레드는 10으로 설정했어도 일정시간(keepAliveSeconds)이 지나면 코어 쓰레드 개수가 줄어든다. default값은 false이다..

@transactional annotation

DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // transaction 상태 정보 알려줌 TransactionStatus status = txManager.getTransaction(def); // 에러 없으면 commit txManager.commit(status); } catch (TransactionException ex) { // 에러 있을 경우 rollback txManager.rollback(status); LOGGER.error("insertBoard"); public void ins..

Querystring vs. @PathVariable 이용상 차이점

1. Querystring https://prde.tistory.com/61?category=946261 ※Controller에서는 아래와 같이 쿼리 스트링일 때는 getParameter로 ~ @RequestMapping("/boardRead") public String boardRead(HttpServletRequest request, Model model){ Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); UserDTO user = userDetailsDao.findUserByEmail(authentication.getName()); String userid = user.getUserid()...

MessageSource 메시지 국제화 처리

1. applicationContext.xml에 아래와 같은 설정을 해준다. //빈 각체에서 메시지 이용하기 위한 것 //ApplicationContextAware 인터페이스 구현 or //MessageSourceAware 인터페이스 구현해서 getMessage()메서드 이용해서 메시지 사용해도 된다. 2. LocaleMessage 클래스 구현 package com.legalcounsel.Common; import org.springframework.context.support.MessageSourceAccessor; import java.util.Locale; public class LocaleMessage { private static MessageSourceAccessor msAcc = null; ..

QueryString, request.getParameter, request.getParameterValues

1. Query String : 입력 데이터를 전달하는 방법 중 하나로 URL 주소에 데이터를 파라미터를 통해 넘기는 것을 말한다. 형식은 앤드포인트 주소 이후에?를 쓰면서 쿼리 스트링의 시작하며 뒤에는 key=value형식으로 따라붙는다. 파라미터가 여러 개일 경우 & 붙여서 복수의 파라미터를 넘길 수 있다. 2.request.getParameter : ServletRequest 인터페이스 중 하나의 메소드로 공식 문서에 따르면 "For HTTP servlets, parameters are contained in the query string or posted form data." 파라미터를 꺼내 쓸 수 있는 경우는 Querystring, post방식으로 전해진 data 두 가지 경우이다. 만약 파라미..