분류 전체보기 69

[Java] 스트림(Stream)과 람다식

스트림(Stream)이란? 스트림(Stream)은 자바 8부터 추가된 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. Iterator과 비슷한 역할을 하지만 람다식으로 요소 처리 코드를 제공하여 코드가 좀 더 간결하다는 점과 내부 반복자를 사용하므로 병렬처리가 쉽다는 점에서 차이가 있다. Iterator과 Stream의 코드 비교 ArrayList list = new ArrayList(Arrays.asList(1,2,3)); Iterator iter = list.iterator(); while(iter.hasNext()) { int num = iter.next(); System.out.println("값 : "+num); } 자바 7 이전까지는 Array..

java 2023.05.03

[Java] 추상클래스(abstract class)와 인터페이스

추상 클래스(abstract class) 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다. abstract class를 상속받은 클래스(하위 클래스)는 자기의 성질에 맞게 Overriding하여 사용한다. 추상 클래스는 new 연산자를 사용하여 객체를 생성할 수 없다. 추상 클래스(부모)와 일반 클래스(자식)는 상속의 관게에 놓여있다. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용된다. 공통된 필드와 메서드를 통일하여 일반 클래스 작성 시 시간을 절약할 수 있다. 추상 클래스는 단일 상속만 가능하며 일반 변수를 가질 수 있다. 추상 클래스는 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것..

java 2023.05.03

[Java] 오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩(Overloading) 메서드의 이름은 같고 매개변수의 개수나 타입이 다른 함수를 정의하는 것 리턴 값만을 다르게 갖는 오버로딩은 작성할 수 없다. 같은 매개변수의 개수와 타입을 가지면서 접근 제어자만 다르게 한다고 오버로딩이 되지는 않는다. 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있다. 기존에 없던 새로운 메서드를 정의 public class Test { // 매개변수가 없는 overloadingTest() method void overloadingTest(){ System.out.println("매개변수를 받지 않는 메서드"); } // 매개변수로 int형 인자 2개를 요청하는 overloadingTest(int a, int b) method void overloadingTes..

java 2023.05.03

Spring Boot Validation

Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증(validation)은 여러 계층에 걸쳐서 적용된다. Client의 데이터는 조작이 쉽고, 모든 데이터가 정상적인 방식으로 들어오는 것이 아니기 때문에, client side 뿐만 아니라 server side에서도 데이터 유효성을 검사해야 할 필요가 있다. Spring Boot에서는 @Validated를 이용해 유효성을 검증할 수 있다. Bean Validation Spring의 기본적인 validation인 bean validation은 클래스 필드에 특정 annotation을 적용하여 필드가 갖는 제약 조건을 정의하는 구조로 이루어진 검사다. validator가 어떠한 비즈니스적 로직에 대한 검증이 아닌, 그 클래스..

카테고리 없음 2023.03.14

Spring Boot @Builder

Builder Pattern은 객체 생성에서 주입하는 것에 대한 방식이다. 객체를 생성할때는 두가지 패턴이 존재하는데 생성자 패턴과 빌더 패턴이다. 생성자 패턴은 우리가 흔하게 사용했던 Constructor이다. public class CarImpl { private String id = "1"; private String name = "carTest"; Car car1 = new Car(id, name); Car car2 = new Car(name, id); } 위는 Car는 객체를 구현한건데 일반 생성자 패턴을 사용하면 코드에서 파라미터에 대한 정확성과 오류를 찾기 어려워지게 된다. 즉, 다른사람이 코드를 볼때 어떤 파라미터가 정확하게 전달 되었는지 확인하기 힘들다. 그렇기에 Builder를 사용한다..

spring boot 2023.03.14

Spring Boot @RequestMapping

우리는 특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의 한다. 이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다. @RequestMapping에서 가장 많이사용하는 부분은 value와 method이다. value는 요청받을 url을 설정하게 된다. method는 어떤 요청으로 받을지 정의하게 된다.(GET, POST, PUT, DELETE 등) @RequestMapping(value = "/hello", method = RequestMethod.GET) 공통적인 url은 class에 @RequestMapping으로 설정을 해주었다. 그리고 @GetMapping, @PostMapping, @PutMapping, @DeleteMa..

카테고리 없음 2023.03.14

Spring boot Model 객체

Model이란? Model 객체는 Controller에서 데이터를 생성해 이를 JSP 즉 View에 전달하는 역할을 한다. HashMap 형태를 갖고 있고, 키(key)와 밸류(value) 값을 저장한다. Servelt의 request.setAttribute()과 비슷한 역할을 한다. 메서드에 매개변수를 Model 타입의 model 변수를 선언함으로 사용이 가능하다. "addAttribute"를 통해 View로 데이터를 전달할 수 있다. @RequestMapping(value="/modelTest") public String test1(Model model) { String str = "GoCoder"; model.addAttribute("test",str); return "modelTest"; }

카테고리 없음 2023.03.13

Spring Boot Thymeleaf Caching(템플릿 캐싱)

기본적으로 템플릿은 최초 사용될 때 한 번만 파싱 되는 성격을 가지고 있다. 파싱 된 결과는 향 후 사용을 위해 캐시에 저장되는데, 이것은 프로덕션에서 애플리케이션을 사용할 때 좋은 기능이다. 매번 요청을 처리할때마다 불필요하게 템플릿을 파싱하지 않으므로 성능을 향상시킬 수 있다. 캐싱이 개발할 때는 오히려 불편한 요소로 작용한다. 애플리케이션을 시작하고 디자인 수정 후 새로고침을 하더라도 수정 전의 페이지만 나오는 것을 확인할 수 있는데, 이를 보완하기 위해 해당 캐싱의 속성을 설정할 수 있게 지원해준다. 기본적으로 모든 템플릿 엔진인 FreeMarker, Groovy Templates, Thymeleaf 등은 캐싱 활성화 속성이 true로 되어있다. 따라서 캐싱을 비활성화 하려면 false로 설정하면..

spring boot 2023.03.13

Window 환경에서 JDK 설치 & 환경변수 설정

JDK 설치하기 1. 오라클 다운로드 센터에서 JDK 17 Win x64를 설치 https://www.oracle.com/kr/java/technologies/downloads/#jdk17-windows Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com 2. 다운받은 파일을 실행 3. 설치 경로를 확인 환경변수 설정하기 - 고급 시스템 설정에 환경변수 클릭 - 시스템 변수에서 변수 이름과 변수 값을 지정 - Path 변수에 bin 폴더 경로를 추가 결과 명령 프롬..

spring boot 2023.03.07

Spring Boot, React 연동하기

Spring Boot 프로젝트 생성 https://start.spring.io 언어 : Java Type : Gradle-Groovy Group : com.**** (회사이름?) Artifact : SpringReact (해당 프로젝트명) JDK : 11 Java : 11 Packaging : Jar Dependency (필요한 의존성 추가하기) Spring Boot DevTools Lombok Spring Web Thymeleaf Spring Data JPA WebSocket MySQL Driver Oracle Driver - Port 변경 src > main > reources > application.properties server.port=8090 - CORS 어노테이션 방법 @CrossOrigi..

spring boot 2023.02.15