본문 바로가기

Java44

[Spring]서블릿 Filter를 사용해보자 스프링 mvc의 전반적인 요청과정은 이전에 정리했어요 [Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정 Servlet Filter 요청을 받은 WAS가 Servlet Container에게 Request, Response를 던져주면, 이를 먼저 Filter에서 받아. Request에 대한 필터링를 진행하고, 서블릿에게 ServletRequest, ServletResponse를 건네요. 요청에 대한 작업이 끝난 후 Response에 대한 필터링를 진행해요. 쉽게말해, 요청과 응답에 대한 필터링을 진행해요. 동작과정 import javax.servlet.*; import java.io.IOException; public class GumpFilter implements Filter { .. 2021. 6. 18.
[SpringBoot] Local-Memory 캐시를 사용해보자 @Service public class PathService { private static final Logger logger = LoggerFactory.getLogger(PathService.class); private final LineService lineService; private final StationService stationService; private final PathFinder pathFinder; ... @Transactional(readOnly = true) public PathResponse findPath(Long departure, Long arrival, LoginMember loginMember) { try { logger.info("캐시 되에에엠~"); List li.. 2021. 5. 31.
[Spring] 애플리케이션 컨텍스트 애플리케이션 컨텍스트 오브젝트 팩토리(직접 설정 정보를 넣어주는 것, DaoFactory)에 대응하는 것이 스프링의 애플리케이션 컨텍스트예요. 스프링에서는 이 애플리케이션 컨텍스트를 IoC컨테이너라 하기도 하고, 간단히 스프링 컨테이너라고 부르기도 해요. 또는 빈 팩토리라고 부르기도 해요. ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속했으므로, 같이 봐도 괜찮아요. 특정 클래스를 설정정보를 등록하고, @Bean이 붙은 메소드의 이름을 가져와 빈 목록을 만들어줘요. 애플리케이션 컨텍스트의 getBean() 메소드를 호출하면 자신의 빈 목록에서 요청한 이름이 있는지 찾고, 있다면 빈을 생성하는 메소드를 호출해서 오브젝트를 생성시킨 후 클라이언트에게 돌려줘요... 2021. 5. 13.
[SpringBoot] @SpringBootApplication @SpringBootConfiguration, @EnableAutoConfiguration 스프링 부트를 의존성에 추가하면 (implementation 'org.springframework.boot:spring-boot-starter-web') 아래와 같이 @SpringBootApplication 애노테이션이 붙어있는 메인 클래스를 확인할 수 있어요. @SpringBootApplication public class SpringBootApplication { public static void main(String[] args) { SpringApplication.run(SpringBootApplication.class, args); } } 메인 클래스 부분에서 코드를 수정하는 부분은 거의없지만, 서비스의 시작이라는 관점에서 굉장히 중요한 부분이라 생각해요. @SpringBootAp.. 2021. 5. 10.
[SpringBoot] HttpSession 대신 HandlerMethodArgumentResolver 사용하기 HandlerMethodArgumentResolver란? HandlerMethodArgumentResolver는 사용자 요청이 Controller에 도달하기 전에 그 요청에 포함된 파라미터들을 수정할 수 있게 해주는 역할을 해요. Controller에서 @RequestBody 어노테이션을 사용해 Request의 Body 값을 받아올 때, @PathVariable 어노테이션을 사용해 Request의 Path Parameter 값을 받아올 때 이 HandlerMethodArgumentResolver를 사용해서 값을 받아온다고 해요. 1. HttpSession을 @LoginUser로 변경하기 @PostMapping public ResponseEntity saveChess(@RequestBody final Ch.. 2021. 5. 3.
[Java] Call by value? 자바에서는 모두 Call/Pass by value. 자바가 Call by Reference가 아니라는 사실에 적잖이 충격이었던 경험이 있어요. 제게 Call by Value라고 확신을 하게 해줬던 문서들을 첨부해요. 우선 래퍼런스의 끝판왕 oracle docs를 확인해볼게요 https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html 문서에서 프리미티브 타입의 인자 잔달에 대해 확인해볼 수 있어요. "Passing Primitive Data Type Arguments" int와 double와 같은 프리미티브 타입은 메서드 인자(argument)에 값으로 전달된다고 해요.(이는 call-by-value, pass-by-value로 불려요) 전달될 .. 2021. 4. 28.
[Database] Inner Join vs Outer Join 조인(Join)이란 2개 이상의 테이블을 서로 엮어 조회하는 것이에요. Inner Join은 서로 매칭되는 (둘다 null이 아닌)것만 엮어서 조회해요. Outer Join은 매칭 뿐만 아니라 매칭되지 않는 데이터도 조회해요 (베이스 테이블의 컬럼에 해당하는 값이 없어도 null 로 불러옴) 이해가 쉽게 되지 않으니 예제와 그림을 통해 설명할게요 실습 데이터 CREATE TABLE IF NOT EXISTS team ( team_id VARCHAR (36) NOT NULL, name VARCHAR (64) NOT NULL, PRIMARY KEY (team_id) ); CREATE TABLE IF NOT EXISTS member ( member_id VARCHAR(36) NOT NULL, name VARCH.. 2021. 4. 26.
[Java] java.util.Collections 주요 메소드 정리 설명에 앞서, 컬렉션의 중복되는 의미들을 살펴볼게요 컬렉션의 중복되는 의미들 1.collection(소문자 c): 객체가 저장되고 반복되는 자료 구조를 나타냅니다. 2.Collection(대문자 C): Set, List, Queue가 상속받는 java.util.Collection 인터페이스입니다. ( 이는 상속입니다. 구현이 아니라. 즉, Collection를 직접 구현한 것은 없습니다. ) 3.Collections(대문자 C, s로 끝남): collections에 사용할 정적 유틸리티 메소드의 모음이 있는 java.util.Collections 클래스입니다. 1, 2에 관련된 내용은 아래 포스팅에서 다뤘어요. [Java] 컬렉션 프레임워크(Collections Framework) 이번 포스팅에서 살펴 .. 2021. 4. 10.
[Java] Arrays.asList() vs Collections.singletonList() java.util.Colletions애는 컬렉션 프레임워크 타입의 객체에 대한 객체생성, 정렬, 병합, 검색 등의 알고리즘을 구현한 메소드가 정의되어 있어요. 저는 그중 Colltions.singletonList()를 사용해보았어요. 기술설명 java.util.Colletions에는 아래와 같이 메소드가 정의되어있는데요 public static List singletonList(T o) { return new SingletonList(o); } 전달인자로 들어온 객체만 포함하는 불변의 리스트를 반환하는 메소드예요. 예제 이 기술을 사용하기 전에는 CarNames carNames = CarNames.of(Arrays.asList(new CarName("pobi"))); 위와 같이 사용했는데 이후엔 CarN.. 2021. 4. 9.