본문 바로가기

java12

파일 다운로드 try catch 시 자원 반납, exception 시 json 응답 이번에 많은 테스트를 하며 기록해 두면 좋을 것 같은 내용이다. 상황은 다음과 같다.1. 파일 다운로드를 모두 void로 리턴한다.- 스트림으로 이미 내보내서 커밋 됐는데 또 json으로 리턴하려고 하니 response has already been committed 에러가 나는 것으로 보임2. 파일 다운로드 중간에 IOException 이 발생한 경우 json으로 응답하려고 함 크게 이 두가지다.바로 코드로 들어가자public void fileDownload(){ // ... setDownloadResponseHeaders(...); OutputStream outputStream = response.getOutputStream(); try (FileInputStream fileInputStream = .. 2024. 12. 4.
mockMvc에서 HttpServletRequest 값 넣는 방법 상황- 컨트롤러 테스트임- mock 테스트로 session은 잘 넣을 수 있으나 HttpServletRequest 을 넣으려고하니 안 들어감 대충 코드는 이렇다.@GetMapping("/~~") public void someMethod(@Valid SomeVo someVo, @PathVariable("lang") @NotBlank String lang, HttpServletRequest req, HttpServletResponse res) throws Exception { // ... //public static final 로 선언한 자료구조 SOME_MAP.remove(req.getRequestedSessionId()); } req.getRequest.. 2024. 12. 3.
자바(JAVA) - 플라이 웨이트(Flyweight) 패턴 - 자바(JAVA) - 플라이 웨이트(Flyweight) 패턴 1. 의도 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유해서 사용하도록 하여 메모리 사용량을 최소화하는 소프트웨어 디자인 패턴 2. 용도 주로 메모리 사용량을 줄여서 효율성을 높일 때 사용 3. UML 4. 구현 public class Font { final String family; final int size; public Font(String family, int size) { this.family = family; this.size = size; } } ========================================================================= public class FontFac.. 2023. 11. 16.
자바(JAVA) - 팩토리 메서드(Factory Method) 패턴 1. 의도 부모 클래스에 알려지지 않는 구체 클래스를 생성하는 패턴이며, 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴 2. 용도 객체 생성을 관리하고 확장 가능한 디자인을 유지해야 하는 시스템에서 많이 사용함 예를 들면, 라이브러리와 프레임워크에서 인스턴스 생성을 추상화할 때 사용함 3. UML 4. 구현 public abstract class Pizza { protected Integer price; protected PizzaType type; public void print() { System.out.println("이 피자는 " + type.name() + "피자이며 가격은 " + price + "원 입니다."); } } ==================================.. 2023. 11. 15.
자바(JAVA) - 추상팩토리(Abstract Factory) 패턴 1. 의도 구체적인 서브클래스 정의 없이 관련 객체들을 하나의 군으로 통합시킨 인터페이스를 제공함. 2. 용도 일관된 방식으로 객체를 생성하고자 할 때 유용함. 구체적인 객체 생성을 모두 구체 팩토리 클래스에 위임함으로써, 여러 객체가 생성되는 것을 방지함. 3. UML 4. 구현 public class Client { public static void main(String[] args) { ComputerFactory computerFactory = new LGComputerFactory(); computerFactory.createKeyBoard(); computerFactory.createMouse(); } } // LGKeyBoard 생성 // LGMouse 생성 ==================.. 2023. 11. 8.
자바(JAVA) - 컴포지트(Composite) 패턴 1. 의도 객체들의 관계를 트리 구조로 구성해 부분 - 전체 계층을 표현하는 패턴으로 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 2. 용도 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우, 전체 - 부분 관계로 정의할 수 있다. 전체 - 부분 관계의 대표적 예는 directory - file 이 존재한다. 이러한 전체 - 부분 관계를 효율적으로 정의할 때 유용하다. 3. UML 4. 구현 public interface IItemComponent { int getPrice(); String getName(); } =============================================================== public class Bag implements II.. 2023. 11. 2.