728x90

전체 글 442

[Java] 람다와 스트림(4)

자바의 정석 챕터 14를 읽고 정리 2.2 스트림의 중간연산 스트림 자르기 - skip(), limit() - 스트림의 일부를 잘라낼 때 사용 Stream skip(long n); // 처음 n개 요소를 건너 뛴다. Stream limit(long maxSize); // 스트림의 요소를 maxSize만큼 제한한다. IntStream skip(long n); IntStream limit(long maxSize); 스트림의 요소 걸러내기 - filter(), distinct() - distinct()는 중복된 요소를 제거함. - filter()는 조건에 맞지 않는 요소를 제거함. Stream filter(Predicate

[Java] 람다와 스트림(3)

자바의 정석 챕터 14를 읽고 정리 2.2 스트림 만들기 - 스트림의 소스가 될 수 있는 대상은 배열, 컬렉션, 임의의 수 등 다양함 컬렉션 List list = Arrays.asList(1, 2, 3, 4, 5); //list를 소스로 하는 컬렉션 생성 Stream intStream = list.stream(); - forEach()로 지정된 작업을 스트림의 모든 요소에 대해 수행 가능하다. intStream.forEach(System.out::println); intStream.forEach(System.out::println); // 에러. 스트림이 닫힘 배열 Stream Stream.of(T... values); // 가변 인자 Stream Stream.of(T[]); Stream Arrays.s..

[Spring] 스프링 DI (2)

스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.5 JavaConfig를 이용한 DI - XML파일 작성 대신에 Java 코드를 작성한다. 2.5.1 예제를 이용한 JavaConfig https://devhooney.tistory.com/9 스프링 DI (1) 스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트 devhooney.tistory.com - 이 글에서 작성했던 ProductService, ProductDao 등의 샘플을 JavaConfig로 수정한다. - AppConfi..

[Spring] 스프링 DI (1)

스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트의 인스턴스 변수에 그 오브젝트가 이용할 오브젝트를 설정한다는 의미. - 학술적으로 어떤 오브젝트가 이용할 오브젝트를 주입 혹은 인젝션(인스턴스 변수에 설정)한다는 의미. - DI를 구현하는 컨테이너는 클래스의 인스턴스화 등의 생명 주기 관리 기능이 있는 경우가 많다. 2.2 DI를 사용할 곳 - 보통 컨트롤러, 서비스, DAO의 의존 관계를 구축할 때 2.3 어노테이션을 이용한 DI 2.3.1 기본 - @Autowired와 @Component - ProductService 인터페이스 publ..

[Java] 람다와 스트림(2)

자바의 정석 챕터 14를 읽고 정리 2. 스트림 2.1 스트림이란 - 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메소드들을 정의 해놓은 것. - 코드의 재사용성을 높여줌. String[] strArr = {"aaa", "bbb", "ccc"}; List strList = Arrays.asList(strArr); // 스트림 생성 Stream strStream2 = Arrays.stream(strArr); Stream strStream1 = strList.stream(); // 다른 데이터 소스지만, 이를 정렬하고 출력하는 방법은 동일하다. strStream1.sorted().forEach(System.out::println); strStream2.sorted().forEach(System..

[Spring] @ResponseBody가 null만 가져올 때

단순한 API인데, DTO에 데이터가 null로 들어온다... - 회원가입 기능을 개발하는데, DTO로 데이터를 받으려 했으나 잘 되지 않는다. // Java @PostMapping("/join") public ResponseEntity join(@RequestBody TUser tUser) { System.out.println(tUser); long result = eltService.join(tUser); ... ... } // Javascript const result = await fetch("/xxx/xxx/join", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }).th..

[Java] 람다와 스트림(1)

자바의 정석 챕터 14를 읽고 정리 1. 람다식 1.1 람다식이란 메소드를 식으로 표현한 것 메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지므로, 람다식을 '익명함수'라고 하기도 함. - 람다식과 메소드 비교 // 람다식 int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1); // 메소드 int method() { return (int)(Math.random() * 5) + 1); } 1.2 람다식 작성하기 - 타입과 메소드명을 지우고 파라미터와 중괄호 사이에 '->'를 넣어주면 완성 // 메소드 int max(int a, int b) { return a > b ? a : b; } // 람다식 (int ..

[Javascript] 안드로이드 모바일 브라우저에서 PDF띄우기

iOS, PC에서는 바로 열리는 PDF. 안드로이드에서는 자동 다운로드가 되는 현상 - 지난번 포스팅에서 PDF를 잘 띄웠는데, 안드로이드 모바일 브라우저에서만 자동 다운로드되어 문제가 발생했다. 해결방법 - 구글링 결과 Google Docs를 이용한 방법이 있었다. - 하지만 댓글에 2017 년 4 월 6 일부터이 형식을 사용할 수 없다고 나와있어서 pdf.js, pdfObject.js를 이용해서 구현해봤지만, 안드로이드에서만 자동 다운로드 되는 문제가 계속해서 발생했다. - 다시 구글링 했는데, 같은 글을 다시 보는데 2017 년 4 월 6 일부터이 형식을 사용할 수 있다라고 나와있었다;;;(난독증인가, 자동번역의 오류인가) - 아무튼 무사히 해결했다. // Open PDF function openP..

[Spring] @PutMapping, @DeleteMapping 403 Forbidden 에러

윈도우 환경인 로컬에서는 잘되던 @DeleteMapping이 리눅스 환경에 배포 후 안된다. - 환경설정 문제인거 같아서 관련 내용으로 구글링 - SecurityConfig에 아래 내용을 추가해봤지만 효과가 없었다. .antMatchers(HttpMethod.DELETE,"/**") - WebConfig를 수정하니 효과가 있었다. @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(("/**")) .allowedOrigins("*") .allowedMethods( HttpMethod.GET.name(), HttpMethod.HEAD.name(), HttpMethod.POST.name(), HttpMethod...

[Javascript] 웹으로 PDF 띄우기

회사 요구사항으로 PDF를 뛰워야했다. - 이전에 Java로 띄웠었는데, 간편하게 Javascript로 가능하다. window.open('서버파일경로+파일명.확장자'); - Java로 하면 FileInputStream fis = null; BufferedOutputStream bos = null; try { String pdfFileName = "경로+파일명.확장자"; File pdfFile = new File(pdfFileName); // 클라이언트 브라우져에서 바로 보는 방법(헤더 변경) response.setContentType("application/pdf"); // 이 구문이 있으면 [다운로드], 이 구문이 없다면 바로 target 지정된 곳에서 띄울 수 있다. //response.addHead..

728x90