JAVA/Theory25 [Spring] Spring Security 🔍 Spring Security를 사용하는 이유API를 관리할 때는 인증 및 인가를 구현하기 위해 유저에 관련된 클래스들을 작성하게 된다.그 클래스들은 리포지터리, 모델, 서비스, DTO, 요청, 컨트롤러 등으로 기능을 위해 작성했던 클래스들과 비슷한 과정을 거친다.하지만 API가 사용자를 인증하지 않기 때문에 불완전하다고 할 수 있다.우리가 사이트에서 로그인을 했는지 안 했는지 판단하는 코드를 추가한다고 한다면, 모든 API에 "요청 바디에 token이 있는지"를 확인해야 한다. 이 방식을 사용할 경우 100개가 넘는 API를 관리한다고 하면 같은 코드를 100번 반복해야 한다.하지만 Spring Security를 이용한다면 코드를 한 번만 짜더라도 이 코드가 모든 API를 수행하기 바로 전에 실행되.. JAVA/Theory 2024. 5. 13. [Java] Deque와 LinkedList 🔍 DequeDeque는 Double Ended Queue의 양방향 대기열이라고도 불리는 자료구조이다.양방향으로 열려있는 구조로 Queue와 외형적으로 비슷하지만 Deque는 Stack과 Queue와 달리 LIFO, FIFO와 같은 순서에 구속되지 않는다. Deque의 특징 Stack 및 Queue를 모두 사용할 수 있다.Deque는 양쪽으로 데이터를 추가하고 삭제할 수 있어서 Stack과 Queue를 구현할 수 있다.추가와 삭제를 양쪽에서 제어할 수 있어서 여러 형태로 사용할 수 있다. Deque의 선언Deque deque = new LinkedList();Deque deque = new ArrayDeque(); LinkedList와 ArrayDeque 인터페이스를 활용해 구현한 deque🔍 Deq.. JAVA/Theory 2024. 4. 26. [Java] HashMap과 HashSet 🔍 HashMapHashMap은 키-값 쌍으로 데이터를 저장하므로, 다양한 용도로 활용할 수 있다.Value의 중복값은 허용하나 Key값이 중복될 수는 없다. 1. 데이터 저장 및 검색데이터를 저장할 때는 put(key, value) 메서드를 사용한다.특정 키에 해당하는 값을 검색할 때는 get(key) 메서드를 사용한다.HashMap scoreMap = new HashMap();scoreMap.put("Alice", 90);scoreMap.put("Bob", 85);Alice의 점수는 scoreMap.get("Alice")이다. 2. 데이터 삭제특정 키-값 쌍을 삭제할 때는 remove(key) 메서드를 사용한다.모든 데이터를 삭제할 때는 clear() 메서드를 사용한다.scoreMap.remove(.. JAVA/Theory 2024. 4. 25. [Java] Stack과 Queue 그리고 Deque 🔍 StackStack은 후입선출(LIFO: Last In First Out) 구조로 되어 있는 자료구조이다. 데이터를 순서대로 쌓아올리는 형태이며, 단방향 입출력 구조를 가진다. 스택은 시스템 해킹, 그래프의 깊이 우선 탐색(DFS) 등 다양한 분야에서 활용된다.// 스택 선언Stack stack = new Stack();// 데이터 추가stack.push(1);stack.push(2);stack.push(3);// 데이터 꺼내기int top = stack.pop(); // 3top = stack.pop(); // 2top = stack.pop(); // 1// 스택 비어있는지 확인boolean isEmpty = stack.empty(); // true🔍 QueueQueue는 먼저 들어온 데이터가 .. JAVA/Theory 2024. 4. 25. [MAVEN] SpringMVC 버전 2 🔍 DispatcherServlet Spring 프레임워크에서 제공하는 DispatcherServlet을 사용하며, DI를 위한 설정 파일인 dispatcherServlet-servlet.xml이 필요하다. 🔍 Controller Spring 프레임워크에서 제공하는 Controller를 상속하여 사용하며, 기존에는 request 객체를 통해 데이터를 전달했지만 이는 무겁다. package com.spring.controller.board; import java.util.ArrayList; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import com.spr.. JAVA/Theory 2024. 3. 5. [MAVEN] SpringMVC 버전 1 🔍 DispatcherServlet 개발자가 직접 만든 DispatcherServlet을 사용. 이는 프론트 컨트롤러 역할을 수행하며 멤버변수 초기화, 생성자, Setter, 어노테이션, 의존 주입, init() 메서드 등을 포함한다. package com.spring.controller.common; import java.io.IOException; import org.springframework.stereotype.Controller; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servl.. JAVA/Theory 2024. 3. 5. [Spring] 의존 주입을 위한 어노테이션 스프링의 의존성 주입(Dependency Injection)을 통해 객체들을 관리하고, 코드의 가독성을 높이며, 런타임 시에 필요한 설정을 자동으로 수행할 수 있도록 도와주는 어노테이션들이 있다. 단순히 어노테이션을 붙이는 것만으로는 해당 클래스가 원하는 동작을 하지 않으며, 스프링 설정 파일에 어노테이션을 인식하도록 지시해야 한다. @Component 이 어노테이션은 스프링 컨테이너에 의해 관리되는 클래스를 표시한다. 주로 일반적인 구성 요소로 사용되며, 특별한 의미를 나타내는 다른 어노테이션을 사용하지 않을 경우에는 이 어노테이션을 사용한다. @Service 비즈니스 로직을 수행하는 서비스 클래스에 주로 사용된다. 주로 트랜잭션 관리, 예외 처리 등과 같은 비즈니스 로직을 처리한다. @Reposito.. JAVA/Theory 2024. 3. 4. [Spring] 의존 주입 (DI) 🔍 의존 주입 (Dependency Injection) 의존 주입은 객체 간의 의존 관계를 외부에서 주입하는 디자인 패턴이다. 이는 객체가 직접 필요한 의존성을 생성하거나 참조하지 않고, 외부에서 필요한 의존성을 주입받아 사용함으로써 결합도를 낮추고 응집도를 높인다. 스프링 프레임워크에서는 주로 생성자 주입, Setter 주입, 필드 주입 등의 방식으로 의존성을 주입한다. 이를 통해 코드의 테스트 용이성과 유지 보수성을 향상시킬 수 있다. 🔍 생성자 주입(Constructor Injection) 생성자 주입은 객체 생성 시 생성자를 통해 의존성을 주입하는 방식이다. 이 방식은 스프링에서 가장 많이 사용되며, 빈을 생성하는 시점에 모든 의존성이 해결된다. public class Car { private E.. JAVA/Theory 2024. 2. 29. Spring 프레임워크 Spring IoC와 AOP를 지원하는 경량의 프레임워크 낮은 결합도와 높은 응집도를 가지는 코드 : 제어의 역행. 즉, new를 개발자가 하지 않고 컨테이너가 수행하는 기능과 관점지향 프로그래밍. 즉, 공통로직을 별도의 클래스로 모듈화하여 올바른 시기에 호출하는 기능을 수행하는, 경량의 POJO를 다루는 컨테이너를 제공하는 프레임워크 IoC (Inversion of Control) IoC가 뭔가요? : 코드에서 new를 제거하는 것 IoC는 제어의 역행으로 코드에서 new를 제거하고 컨테이너를 통해 제어를 수행한다. ex) 서블릿 컨테이너 (웹 서버, 톰캣) 서블릿 클래스만 생성 가능했음 FrontController 비동기처리 로직 클래스 컨테이너란? 객체를 생성 객체를 관리하는 주체 관리 == 호출 .. JAVA/Theory 2024. 2. 27. [Java] request 객체 🔍 request request 객체는 서블릿 컨테이너에서 클라이언트의 HTTP 요청 정보를 담고 있는 Java 객체이다. 이 객체는 클라이언트가 전송한 데이터, 요청 헤더, 쿠키, URL, 세션 등과 같은 다양한 정보를 제공하여 서버 측에서 요청을 처리할 수 있도록 도와준다. Java Servlet 기술에서 주로 사용된다. request 객체는 HttpServletRequest 인터페이스를 구현한 객체로서, 주요한 메서드와 속성을 제공한다. 🔍 request 객체의 주요 기능 및 사용법 파라미터(Parameter) 읽기 : 클라이언트가 전송한 데이터를 읽기 위해 다양한 메서드를 제공한다. String username = request.getParameter("username"); 헤더(Header) 읽.. JAVA/Theory 2024. 2. 6. [Java] POJO vs Non-POJO POJO(Plain Old Java Object) POJO는 "Plain Old Java Object"의 약자로, 간단하고 순수한 자바 객체를 의미한다. 이는 특별한 제약이나 규칙 없이 자바 클래스를 설계하는 방식을 나타낸다. POJO의 특징 기본적인 자바 클래스로, 다른 프레임워크나 라이브러리에 종속되지 않는다 필드에 접근하기 위한 게터(Getter)와 세터(Setter) 메서드를 포함한다 매개변수가 없는 기본 생성자를 가지고 있다. 직렬화를 지원하기 위해 Serializable 인터페이스를 구현할 수 있다. POJO를 사용하면 코드의 유연성과 가독성을 높일 수 있으며, 유지보수가 쉬워진다. Non-POJO Non-POJO는 POJO의 규칙을 따르지 않거나 특정 프레임워크에 종속된 객체를 나타낸다. 주.. JAVA/Theory 2024. 1. 19. 자바(Java)의 클래스 🔍 클래스의 정의 클래스는 class 예약어를 사용하여 정의된다. 클래스의 이름은 대문자로 시작한다. 예: 클래스는 MyClass이다. public class MyClass { // 클래스 내용이 여기에 옵니다. } 🔍 객체(Object) 클래스의 인스턴스를 객체라고 한다. 클래스는 객체를 생성하기 위한 템플릿이며, 객체는 그 템플릿을 기반으로 메모리에 할당된다. 예: 객체는 myObject이다. MyClass myObject = new MyClass(); 🔍 속성(멤버 변수) 클래스는 속성을 정의할 수 있다. 이러한 속성은 클래스의 상태를 나타내며, 멤버 변수 또는 필드라고도 한다. 예: 속성은 myVariable이다. public class MyClass { // 멤버 변수 int myVariable.. JAVA/Theory 2023. 12. 26. 이전 1 2 3 다음