스터디 (23) 썸네일형 리스트형 IoC 컨테이너의 개념 및 역할 컨테이너란? 쉽게 예시를 들자면, 현재 컴퓨터 조립하는 회사에 다닌다고 가정. 고객에게 주문서가 들어오면 우리는 주문서대로 컴퓨터를 만들기 위한 부품들을 박스에 담게 되는데 그것이 컨테이너. 마찬가지로 우리가 스프링을 사용할 때 만들어야 할 주문서대로 객체를 담아야 하는데, 소프트웨어상 그 객체들을 담는 공간을 일반적으로 컨테이너라고 한다. ⇒ 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공하는 것으로 이해하면 된다. IoC란? Inversion Of Control 제어 반전, 제어의 역전 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. 우리가 사용하던 자바 프로그램에서는 개발자가 직접 객체를 생성하고, 원하는 클래스 내에서 다른 객체를 생성해.. POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요? POJO(Plain Old Java Object) 단순한 자바 오브젝트 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트 프레임워크 인터페이스, 클래스를 구현하거나 확장하지 않은 단순한 클래스 Java에서 제공하는 API외 다른 요소에 종속되지 않음 특정 규약과 환경에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리함 (특정 기업의 프레임워크나 서버에서만 동작가능한 코드라면 POJO라 할 수 없음) 장점 - 깔끔한 코드 - 간편한 테스트 - 객체지향적인 설계를 자유롭게 적용 POJO 방식으로 클래스 만들어보기 public class Student { String name; private int marks; public int rollN.. 스프링 Bean의 Scope에 대해서 설명해주세요. Scope: 빈이 존재할 수 있는 범위 스코프 종류 Singleton 기본값 하나의 스프링 컨테이너에 한 개만 사용 가능 스프링 컨테이너의 시작과 종료까지 유지(가장 넓은 범위의 스코프) Prototype 매번 사용될 때마다 빈을 생성해서 사용 빈의 생성과 의존관계 주입까지만 관여 매우 짧은 범위의 스코프 Request 웹 요청이 들어오고 나갈 때까지 빈을 사용 web-aware context에서만 사용 가능 Session 웹 세션이 생성되고 종료될 때까지 하나의 빈을 사용 web-aware context에서만 사용 가능 Application 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 web-aware context에서만 사용 가능 Websocket Websocket 라이프사이클 안에서 한 개의.. DI 종류는 어떤것이 있고, 이들의 차이는 무엇인가요? 의존성 주입(Dependecy Injection, DI)은 객체가 필요로 하는 의존성(즉, 협력 객체들)을 외부에서 제공하는 방식을 말합니다. 이를 통해 객체는 자신의 의존성을 직접 생성하거나 검색하지 않고, 필요한 의존성을 주입받아 사용할 수 있습니다. 이러한 방법은 코드의 결합도를 낮추고, 유연성 및 재사용성을 높이며, 테스트 용이성을 개선합니다. DI의 주요 유형 생성자 주입(Constructor Injection): 객체 생성 시 생성자를 통해 의존성을 주입합니다. 주입받는 객체가 불변하며, 필수 의존성을 갖습니다. 순환 의존성을 컴파일 시간에 잡을 수 있으며, 객체의 완전한 초기화를 보장합니다. public class Car { private final Engine engine; public C.. Spring Bean 의 정의와 생성 과정 스프링 프레임워크는 자체적으로 객체를 생성하고 관리하면서 필요한 곳으로 객체를 주입함 주입을 위해서는 설정 파일, 어노테이션 등을 사용 스프링이 관리하는 객체를 빈 이라고 함! Spring Bean 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트 클래스의 등록 정보, Getter/Setter 메서드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성 설정 메타데이터 : XML 또는 자바 어노테이션, 자바 코드로 표현하며, 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체 등을 정의 사용하는 이유 스프링 간 객체가 의존관계를 관리 객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만든다. 등록 방법 xml에 직접 등록 태그 사용 이 클래스를 쓰겠다.. 입출력 자바의 기본적인 데이터 입출력은 Java.io 패키지에서 제공 Java.io 패키지의 주요 클래스 설명 File 파일 시스템의 파일 정보를 얻기 위한 클래스 Console 콘솔로부터 문자를 입출력하기 위한 클래스 InputStream / OutputStream 바이트 단위 입출력을 위한 최상위 입출력 스트림 클래스 FileInputStream / FileOuputStream 바이트 단위 입출력을 위한 하위 스트림 클래스 DataInputStream / DataOutputStream ObjectInputStream / ObjectOutputStream PrintStream BufferedInputStream / BufferedOutputStream Reader / Writer 문자 단위 입출력을 위한 최상.. 자료형 - HashSet, HashMap HashSet hash table을 사용해 Set을 구현 객체 그 자체를 저장, null 요소도 허용, 중복 X, 순서 유지 X *저장 순서를 유지하고 싶으면 LinkedHashSet을 사용 탐색에 특화된 자료구조로 평균 **O(1)**의 시간복잡도로 데이터를 탐색, 삽입, 삭제가 가능해, List보다 빠름 Set set = new HashSet(); set.add(null); // 1개의 null만 등록 가능 set.add(1); set.add(1); // 중복된 데이터는 등록 안됨 System.out.println("Set 사이즈: " + set.size()); // Set 사이즈: 2 System.out.println("1을 포함하나요? " + set.contains(1)); // true Syst.. 자료형 - Array / ArrayList / LinkedList Array 선형 자료구조(Data Structure)중 하나로 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하여 하나의 변수에 묶어서 관리하기 위한 자료 구조 장점 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간의 효율적 사용 가능 행렬같은 다차원 데이터 표현 가능 배열은 인덱스를 사용 > 빠른 접근이 가능(인덱스를 알고 있으면 상수 시간(O(1))에 접근할 수 있음) 단점 배열 중간에 요소를 삽입하거나 삭제하려면 해당 위치 이후의 요소들을 모두 이동시켜야 하므로 O(n)의 시간 복잡도를 가짐 > 성능 저하 초래 배열이 가진 정적 크기의 한계를 극복하기 위해 사용하는 것이 ArrayList 생성할 때 크기를 정하고 이후에 변경할 수 없음 > 미리 필요한 데이터의 양을 예측해서 배열을 생성해.. 자료형 - String / StringBuffer String 문자열 객체의 인스턴스 주소를 담고 있는 참조형(reference type) 변수 스택(stack) 영역이 아닌 객체와 같이 힙(heap) 에서 문자열 데이터가 생성되고 다뤄짐 Java에서 String은 불변(immutable) 객체로 한 번 생성된 String 객체의 값은 변경될 수 없음 불변성 때문에 여러 쓰레드에서 동시에 사용해도 안전 String 클래스에 있는 모든 메소드들은 원래의 문자열을 변경X, 새로운 String 객체를 반환 ex) replace(), substring(), toLowerCase(), toUpperCase() 등과 같은 String 클래스의 메소드들을 사용 > 원래의 문자열 자체를 수정하는 것이 아니라 수정된 새로운 문자열을 가진 새로운 String 객체를 반환.. 이진 탐색 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘 *배열이 정렬되어 있어야 한다는 조건이 필요하기 때문에 배열이 정렬되어 있지 않은 경우에는 정렬 작업 필요 탐색 범위를 절반씩 줄여나가기 때문에 선형탐색에 비해 빠른 속도를 보장 찾고자 하는 항목의 방향이 정해지면 반대 방향은 탐색할 필요가 없음 cf) 선형탐색(Linear Search) 이란? 배열(Array)이나 리스트(List)와 같은 데이터 구조에서 특정한 값을 찾는 알고리즘 탐색 과정 배열의 중간 값을 먼저 찾고 해당 값을 찾는 값과 비교 중간 값 > 찾는 값일 경우: 왼쪽 부분에서 탐색 진행 중간 값 < 찾는 값일 경우: 오른쪽 부분에서 탐색 진행 (이 과정을 찾는 값이 나올 때까지 반복) Sequential Search는 원하는.. 이전 1 2 3 다음