

Do it! 알고리즘 입문: 자바 편 (10)[책리뷰 & Book review]
Spring Boot는 Spring 프레임워크의 기능을 더 쉽게 사용할 수 있도록 도와주는 도구입니다.
기본 설정이 잘 되어 있어 개발자가 웹 애플리케이션을 빠르게 개발하고 배포할 수 있습니다.
다음은 간단한 Spring Boot 애플리케이션을 만드는 방법입니다:
먼저 Spring Initializr를 사용하여 프로젝트를 생성합니다. 이를 통해 기본적인 프로젝트 구조와 pom.xml 또는 build.gradle 파일이 생성됩니다.
생성된 프로젝트에 들어가 src/main/java 디렉터리에 Application 클래스를 생성합니다.
java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
여기서 @SpringBootApplication 어노테이션은 Spring Boot 애플리케이션임을 나타냅니다.
SpringApplication.run 메서드는 애플리케이션을 시작합니다.
이제 컨트롤러를 추가하여 웹 요청을 처리할 수 있습니다.
java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
여기서 @RestController 어노테이션은 이 클래스가 웹 요청을 처리하는 컨트롤러임을 나타냅니다.
@GetMapping("/hello") 어노테이션은 "/hello" URL로 GET 요청이 오면 hello 메서드를 실행하라는 의미입니다.
이제 애플리케이션을 실행하면, 브라우저에서
"http://localhost:8080/hello"로 접속하면 "Hello, Spring Boot!"라는 메시지를 볼 수 있습니다.
이와 같이, Spring Boot는 웹 애플리케이션 개발을 쉽고 빠르게 해 줍니다. 복잡한 설정 없이도 웹 서버를 실행하고, 웹 요청을 처리하는 코드를 작성할 수 있습니다. 또한, Spring Boot는 데이터베이스 연동, 보안, 캐싱 등 많은 기능을 제공하므로, 다양한 웹 애플리케이션을 효과적으로 개발할 수 있습니다.
springboot of 메소드는 무엇인가
List.of(), Set.of(), Map.of() 메서드를 사용하는 자바 코드 예제입니다:
Java
import java.util.List;
import java.util.Set;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// List.of() 메서드를 사용하여 불변 리스트 생성
List<String> list = List.of("Apple", "Banana", "Cherry");
System.out.println(list); // 출력: [Apple, Banana, Cherry]
// Set.of() 메서드를 사용하여 불변 세트 생성
Set<String> set = Set.of("Apple", "Banana", "Cherry");
System.out.println(set); // 출력: [Apple, Banana, Cherry]
// Map.of() 메서드를 사용하여 불변 맵 생성
Map<String, Integer> map = Map.of("Apple", 1, "Banana", 2, "Cherry", 3);
System.out.println(map); // 출력: {Apple=1, Banana=2, Cherry=3}
}
}
위 코드에서 List.of(), Set.of(), Map.of() 메서드는
각각 불변 리스트, 세트, 맵을 생성 합니다 123.
이 메서드들은 주어진 요소들로 구성된 컬렉션을 생성하며, 생성된 컬렉션은 변경할 수 없습니다 123.
즉, 요소를 추가하거나 제거할 수 없습니다.
따라서 ‘of’ 메서드들은 주어진 요소들로 구성된 불변 컬렉션을 생성하는 데 사용됩니다123. 이러한 메서드들은 불변성을 유지하면서 특정 요소들로 구성된 컬렉션을 쉽게 생성할 수 있게 해 줍니다
Java 8 이후에서는 'of'라는 이름의 정적 팩토리 메서드를 제공하여 불변(immutable) 컬렉션을 쉽게 생성할 수 있도록 지원하고 있습니다. 이 메서드들은 주로 List, Set, Map 인터페이스에서 사용되며, 각각 불변 리스트, 불변 세트, 불변 맵을 생성 합니다.
List.of()
java
List<String> list = List.of("Apple", "Banana", "Cherry");
위 코드는 "Apple", "Banana", "Cherry" 세 개의 요소를 가진 불변 리스트를 생성합니다. 이 리스트는 변경할 수 없으므로, 요소를 추가하거나 제거하는 등의 연산을 시도하면 UnsupportedOperationException이 발생합니다.
Set.of()
java
Set<String> set = Set.of("Apple", "Banana", "Cherry");
위 코드는 "Apple", "Banana", "Cherry" 세 개의 요소를 가진 불변 세트를 생성합니다. 이 세트도 변경할 수 없으며, 중복된 요소를 포함할 수 없습니다.
Map.of()
java
Map<String, Integer> map = Map.of("Apple", 1, "Banana", 2, "Cherry", 3);
위 코드는 "Apple"=1, "Banana"=2, "Cherry"=3 세 개의 키-값 쌍을 가진 불변 맵을 생성합니다. 이 맵도 변경할 수 없습니다.
이런 식으로 Java의 of 메서드들은 불변 컬렉션을 쉽게 생성할 수 있도록 도와줍니다. 불변 컬렉션은 상태 변화로 인한 버그를 방지하고, 멀티스레드 환경에서의 안정성을 높이는 데 도움이 됩니다.
불변 객체(Immutable Object)는 생성 후 그 상태를 변경할 수 없는 객체
불변 객체(Immutable Object)는 생성 후 그 상태를 변경할 수 없는 객체를 말합니다.
한 번 생성되면 내부 상태가 변하지 않으므로 별도의 객체 보호 코드 없이 안전하게 공유할 수 있습니다.
Java에서는 String 클래스나 래퍼 클래스(Integer, Long, Double 등)가 불변 객체의 좋은 예입니다.
java
String str1 = "Hello";
String str2 = str1;
str2 = "World"; // str1의 상태는 변하지 않음
위 코드에서 str1과 str2는 원래 같은 문자열 "Hello"를 참조하고 있습니다. 그러나 str2에 "World"를 할당하더라도 str1이 참조하고 있는 "Hello" 문자열은 변하지 않습니다. 이는 String 클래스가 불변이기 때문입니다.
Java 9에서는
List.of(), Set.of(), Map.of() 등의
메서드를 사용해 불변 컬렉션을 생성할 수 있습니다.
java
List<String> list = List.of("Apple", "Banana", "Cherry");
Set<String> set = Set.of("Apple", "Banana", "Cherry");
Map<String, Integer> map = Map.of("Apple", 1, "Banana", 2, "Cherry", 3);
위 코드의 list, set, map은 모두 불변입니다.
따라서 요소를 추가하거나 제거하는 연산을 수행하려고 하면 UnsupportedOperationException이 발생합니다.
불변 객체는 상태 변화로 인한 버그를 방지하고,
멀티스레드 환경에서의 안정성을 높이는 데 도움이 됩니다.
따라서 가능하면 불변 객체를 사용하도록 설계하는 것이 좋습니다.
. of의 불변객체와 기본 string abc ="123"의 불변객체의 차이점은?
"String abc = "123""과 같이 문자열 리터럴로
String 객체를 생성하는 경우와 List.of(), Set.of(), Map.of()를 사용하여
불변 컬렉션을 생성하는 경우 모두 불변 객체를 생성하는 것은 맞습니다.
그러나 이 두 가지 방법은 사용하는 객체 타입과 그 용도가 다릅니다.
"String abc = "123"": 이 경우는 String 객체를 생성하고 있습니다.
String 클래스는 불변 클래스로, 한 번 생성된 String 객체는 변경할 수 없습니다.
즉, abc 변수가 참조하는 "123" 문자열은 변하지 않습니다.
abc 변수에 다른 문자열을 할당하더라도 원래의 "123" 문자열은 변하지 않습니다.
List.of(), Set.of(), Map.of(): 이 경우는 각각 불변 리스트, 불변 세트, 불변 맵을 생성하고 있습니다.
이들 컬렉션도 한 번 생성되면 요소를 추가하거나 삭제하는 등의 변경을 할 수 없습니다.
즉, 리스트의 요소나 세트의 요소, 맵의 키-값 쌍은 변하지 않습니다.
따라서, "String abc = "123""는 불변 문자열을 생성하고, List.of(), Set.of(), Map.of()는 불변 컬렉션을 생성합니다. 불변 문자열은 문자열 연산에 사용되며, 불변 컬렉션은 여러 요소를 묶어서 다루는 데 사용됩니다. 이 두 가지 방법은 각각 다른 상황과 용도에 따라 사용됩니다.
차이점 -
컬렉션 vs 단일 값: List.of(), Set.of(), Map.of() 메서드는 여러 값을 저장하는 컬렉션을 생성합니다 123.
반면에 String 객체는 단일 값을 저장합니다
Java의 컬렉션 프레임워크에서. map은 메서드가 아닙니다.
Java의 컬렉션 프레임워크에서 .map은 메서드가 아닙니다.
하지만, Stream API에서 map은 중요한 메서드입니다.
Stream API는 Java 8에 도입된 기능으로, 배열이나 컬렉션의 데이터를 처리하는 데 사용됩니다.
map 메서드는 이 Stream API의 중요한 요소 중 하나로,
스트림의 각 요소에 함수를 적용하고 그 결과를 새로운 스트림으로 반환합니다.
예를 들어, 아래의 코드는 리스트의 각 요소를 제곱한 결과를 새로운 리스트로 반환합니다.
java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squares = numbers.stream()
.map(n -> n * n)
.collect(Collectors.toList());
System.out.println(squares); // 출력: [1, 4, 9, 16, 25]
}
}
위 코드에서 numbers.stream()은 리스트를 스트림으로 변환하고,
. map(n -> n * n)은 스트림의 각 요소에 제곱 함수를 적용합니다.
. collect(Collectors.toList())는 결과 스트림을 다시 리스트로 변환합니다.
따라서, Java의 컬렉션에서 map이라는 메서드를 찾는다면,
그것은 스트림에서 요소를 변환하는 데 사용되는 map 메서드를 찾는 것일 가능성이 높습니다.

'컴퓨터공부 > 책리뷰 & book review' 카테고리의 다른 글
Do it! 알고리즘 입문: 자바 편 (13)[책리뷰 & Book review] (0) | 2024.01.31 |
---|---|
Do it! 알고리즘 입문: 자바 편 (11)[책리뷰 & Book review] (0) | 2024.01.31 |
Do it! 알고리즘 입문: 자바 편 (9)[책리뷰 & Book review] (1) | 2024.01.31 |
Do it! 알고리즘 입문: 자바 편 (8)[책리뷰 & Book review] (0) | 2024.01.31 |
댓글