반응형 Programing497 Java Optional 알짜만 빼먹기 사용법/등장이유 Java Optional 알짜만 빼먹기 사용법/등장이유 이번 포스팅에서는 Java Optional에 대해서 알아보도록 하겠습니다. 언제? 왜? Optional 은 Java 8에서 등장을 하게 됩니다. Java 8에서는 Optional 외에 default method, lambda, stream 등 다양한 신규 문법이 등장했습니다. 이는 개인적인 생각으로, 함수형 프로그래밍을 하기 위해 등장했다고 생각합니다. Optional 은 Null Pointer Exception이 발생하지 않도록 하는 Wrapper class로 Null인 value에 접근하더라도 Null Pointer Exception이 발생하지 않습니다. Optional 객체 생성 Optional은 empty(), ofNullable(), of(.. Programing/JAVA 2022. 10. 3. Spring Springboot properties 암호화 jasypt 적용 방법, 설정파일 암호화 Spring Springboot properties 암호화 jasypt 적용 방법, 설정파일 암호화 properties 값을 암호화 하는 라이브러리인 jasypt 적용 방법을 알아보도록 하겠습니다. springboot는 gradle, yml을 사용하고 spring은 maven, properties 를 사용하니 필요에 따라 확인하시기 바랍니다. Springboot jasypt-spring-boot-starter 를 의존성 주입합니다. 1. jasypt 의존성 주입 implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '3.0.3' config 파일을 작성합니다. 2. config 파일 작성 .. Programing/Security 2022. 9. 30. Java Collection 반복문 정리 for, while, iterator, stream Java Collection 반복문 정리 for, while, iterator, stream 이번 포스팅에서는 Java Collection의 반복문에 대해서 알아보겠습니다. Array : 배열 배열의 반복문 1. 기본 for문 Integer num[] = new Integer[] {1,2,3,4,5}; for(int i=num.length-1; i>=0; i--) { System.out.println(num[i]); } 2. 확장 for문 Integer num[] = new Integer[] {1,2,3,4,5}; for(Integer number : num) { System.out.println(number); } 3. while Integer num[] = new Integer[] {1,2,3,4,5.. Programing/JAVA 2022. 9. 29. springboot thymeleaf properties 값 가져오기 springboot thymeleaf properties 값 가져오기 Springboot project에서 properties 파일이나 yml 파일에 설정된 값을 thymeleaf에서 가져오는 방법을 알아보겠습니다. 우선 환경설정 파일에 저장된 값을 가져올 때는 아래와 같이 사용합니다. ${@environment.getProperty('properties.key')} 그리고 환경 변수 값을 가져오기 위해선 아래의 taglib을 추가하셔야 합니다. 예를들어 카카오지도의 키를 properties active에 따라 다르게 하기 위해선 아래와 같이 설정합니다. thymeleaf에서 사용하기 application.yml spring: profiles: active: dev . . . spring: config:.. Programing/JavaScript 2022. 9. 28. gradle project 배포 시 compiler error 해결 방법 gradle project 배포 시 compiler error 해결 방법 gradle 프로젝트 배포 시 Gradle tasks에서 compile 에러가 발생하는 경우가 있습니다. 에러 코드 전체 에러 코드는 아래의 '더보기'를 클릭하세요! 더보기 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileJava'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147) at org.gradle.internal.Try$Failure.ifSucce.. Programing/Springboot 2022. 9. 26. Spring lombok @RequiredArgsConstructor Spring lombok @RequiredArgsConstructor @RequiredArgsConstructor 은 lombok 에서 제공하는 annotation입니다. 이 annotation을 추가하게 되면 클래스의 final 이나 @NonNull인 필드값을 파라미터로 받는 생성자를 자동으로 만들어 줍니다. 예를들어 아래와 같이 User 라는 클래스가 있을 때 클래스 변수를 초기화하지 않고 final로 설정하면 반드시 생성자가 필요하게됩니다. (Spring 에서는 getter/setter 보다는 생성자 주입 방식을 권장합니다.) public class User { private final String userId; private final String userName; @NonNull private .. Programing/Springboot 2022. 6. 28. ajax formData file upload 시 MultipartFile 로 못받는 이유 ajax formData file upload 시 MultipartFile 로 못받는 이유 보통 프론트엔드에서 ajax를 활용해 파일을 서버로 보낼 때는 FormData를 활용합니다. formData 에 파일을 append 하거나 해당 form을 그대로 POST Method로 전송하죠. const formData = new FormData(); const files = document.querySelector("#files").files; for(let file of files){ formData.append("files", file); } 서버에서는 다양한 방식으로 MultipartFile을 받게됩니다. @PostMapping("/upload.do") public String uploadFile(@Re.. Programing/Springboot 2022. 5. 30. 이클립스 Springboot Junit 사용 방법 이클립스 Springboot Junit 사용 방법 JUnit 이란? JUnit은 Java의 단위테스트(Unit Test) 프레임워크 입니다. 어플리케이션 실행과 별도로 동작하기 때문에 매번 메소드의 결과를 디버깅 하지 않아도 되는 편리함을 제공합니다. Springboot project 생성 spring initiallizr 에서 프로젝트를 다운로드하여 이클립스에 추가해줍니다. 프로젝트 추가방법을 아래의 Link를 참고하세요! Link : https://aljjabaegi.tistory.com/480 Eclipse Spring boot Gradle 프로젝트 간단 생성 방법 Eclipse Spring boot Gradle 프로젝트 간단 생성 방법 원래는 간단 합니다. 이클립스 좌측 Project Explor.. Programing/Springboot 2022. 5. 26. Thymeleaf layout 적용 방법 Thymeleaf layout 적용 방법 Spec springboot 2.6.7 thymeleaf 3.0.15 Apache tiles와 같은 기능을 해주는 Thymeleaf layout을 적용하는 방법을 알아보겠습니다. layout은 별도의 설정파일 없이 .html 코드만 수정하면 적용이 가능하기 때문에 tiles 에 비해 적용이 쉽습니다. Dependency 추가 (gradle) implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect' layout을 사용하기 위해서는 thymeleaf-l.. Programing/JavaScript 2022. 5. 19. springboot properties to yml, yml 파일로 변경, profiles 설정 springboot properties to yml, yml 파일로 변경, profiles 설정 springboot의 설정파일인 application.properties 파일을 application.yml 로 변경하는 방법을 알아보겠습니다. properties, yml 차이 properties 파일은 key=value 의 구조를 갖고 yml 파일은 properties 파일에서 반복되는 접두사를 줄인 계층적 구성을 가지고 있습니다. 두 파일 데이터의 차이를 보시죠. List 구조 방식에서도 차이를 보입니다. proflie 설정에서도 차이를 보입니다. properties의 경우 파일을 분리하여 proflie 설정을 해야 했지만, yml은 한 파일 내에서 profile 분기가 가능합니다. --- 구분자를 사용.. Programing/Springboot 2022. 5. 18. Java GC Gargabe Collection 알짜만 빼먹기 / 알고리즘 / 종류 / 모니터링 VisualVM Java GC Garbage Collection 알짜만 빼먹기 / 알고리즘 / 종류 / 모니터링 VisualVM 이번 포스팅에서는 제가 알고있는 Garbage Collection에 대해 정리하는 시간을 갖어볼까 합니다. GC (Garbage Collection) 란? GC는 JVM에서 자동으로 Heap 메모리를 관리하는 기능입니다. GC 의 알고리즘 GC-Root로 부터 참조되는 객체와 그 Reachable 객체가 참조하는 객체를 찾아서 Marking 하고 Marking 과정이 끝나면 Marking되지 않은 UnReachable 객체를 메모리에서 해제(Sweep), 살아남은 영역을 조각 모음(Compact) 하는 Mark and Sweep Compact 알고리즘을 기본으로 사용합니다. Mark and S.. Programing/JAVA 2022. 5. 12. Springboot MVC Filter, Interceptor, AOP 차이 실행시점 구현방법 Springboot Filter, Interceptor, AOP 차이 실행시점 구현방법 이번 포스팅에서는 Springboot MVC 모델을 활용해 Filter, Interceptor, AOP를 구현해보고 차이점과 실행시점에 대해서 알아보도록 하겠습니다. 우선 Spring MVC에서 Filter, Interceptor, AOP는 실행 시점의 차이가 있습니다. Dispatcher-Servlet 이전과 이후로 나눌 수 있는데, Filter는 Dispatcher-Servlet 이전 (Web Container가 관리), Interceptor 와 AOP는 Dispatcher-Servlet 이후에 동작합니다. (Spring Container가 관리) 그래서 Filter는 Spring Bean에 접근할 수 없고, Sp.. Programing/JAVA 2022. 5. 3. Spring MVC 의 흐름과 주요 컴포넌트, 웹 서비스 흐름 Spring MVC 의 흐름과 주요 컴포넌트, 웹 서비스 흐름 이번 포스팅은 기본으로 돌아가서 Spring MVC 흐름을 보면서 주요 컴포넌트가 어떻게 동작하는지 알아보도록 하겠습니다. 브라우저에서 URL를 입력하면 OS의 인터넷 프로토콜에 설정된 DNS 서버 주소로 URL이 전달됩니다. 그럼 DNS서버는 URL주소와 매핑된 IP, PORT로 해당 Request를 전달하게됩니다. (DNS에 대한 정보는 아래의 Link를 참고하세요.) Link : https://aljjabaegi.tistory.com/567 Windows DNS 정보를 확인해보자 nslookup Windows DNS 정보를 확인해보자 nslookup DNS 란 Domain Name System 의 약자 입니다. IP주소는 외우기 힘들기 .. Programing/Spring 2022. 5. 2. Google V8 엔진, Javascript의 동작원리 알짜만 빼먹기 Google V8 엔진, Javascript의 동작원리 알짜만 빼먹기 이번 포스팅에서는 Chrome 등의 브라우저에서 사용되는 V8 엔진과 Javascript의 동작원리에 대해서 알아보려고 합니다. Javascript 개발자로서 꼭 알아야되는 것은 아니지만, 알면 좋은... 여기까지 알아야 하나 하면서도 알면 좋은(?!) 내용이니 가볍게 훑어 보도록 합시다. V8 이 뭔데? V8은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진입니다. C++로 작성되어 있으며, 자바스크립트코드를 바이트코드(bytecode)로 컴파일 하고 실행하는 방식을 사용합니다. 2016년 이전에는 FullCode generator, Crankshaft, TurboFan 이라는 컴파일링 기법이 사용되었고, 이 후.. Programing/JavaScript 2022. 4. 6. Javascript 효율적인 DOM 접근, 추가, 수정 코드 작성법 Javascript 효율적인 DOM 접근, 추가, 수정 코드 작성법 페이지 내 DOM을 컨트롤 하는 것은 Javascirpt 에서 처리하는 가장 흔한 일 중 하나입니다. 효율적인 DOM 접근, 조작, 이벤트 처리방법을 알아두고, 가독성, 성능이 좋은 코딩을 하도록 합시다. 반복문 내 DOM 접근은 피한다 /* 안티패턴 */ for(let i=0, n=10; i Programing/JavaScript 2022. 4. 4. 이전 1 2 3 4 5 6 7 8 ··· 34 다음 💲 추천 글 반응형