Programming/Java
-
[Java Spring] IoC, DI (의존성 주입 방법 xml, annotation)Programming/Java 2022. 10. 30. 03:39
IoC(Inversion of Control), 제어의 역전 : 객체 생성을 프레임워크가 유연하게 제어함으로써 객체간 결합도를 줄여, 유연성 증가, 코드 중복 제어, 유지 보수의 편리성 증가 - 스프링이 모든 의존성 객체를 스프링이 실행될 때 다 만들어주고 필요한 곳에 주입 - Bean들은 싱글턴 패턴의 특징을 가지며, 제어의 흐름을 사용자가 컨트롤하지 않고 스프링에게 맡겨 작업 처리 [ 일반적인 객체 제어 과정 ] 1. 객체 생성 2. new 키워드를 통해 의존성 객체 생성(클래스 내부에서 생성) 3. 의존성 객체의 메소드 호출 [ 스프링의 객체 제어 과정 ] 1. 객체 생성 2. 의존성 객체 주입 (스프링이 만들어놓은 객체를 주입) 3. 의존성 객체의 메소드 호출 DI (Dependency Injec..
-
[Java Spring] 스프링의 MVC 구조Programming/Java 2022. 10. 21. 16:11
Spring MVC Architecture Spring MVC 동작 과정 ① Client가 URL을 통해 Request 전송 ② DispatcherServlet이 Request를 처리하기 위한 Controller를 HandlerMapping 빈 객체에게 검색 요청 ③ HandlerMapping이 Clinet URL을 이용해 이를 처리할 Controller 빈 객체를 DispatcherServlet에 return ④ DispatcherServlet은 Controller 객체를 처리할 수 있는 HandlerAdapter 빈에게 요청 처리 위임 ⑤ HandlerAdapter는 Controller에게 요청에 맞는 메소드 호출하도록 요청 ⑥ Controller는 비즈니스 로직을 수행한 후 처리 결과를 Handle..
-
[Java Spring] 스프링 프레임워크란?Programming/Java 2022. 10. 21. 10:39
스프링 프레임워크(Spring Framework) ✅ 프레임워크란? 소프트웨어의 기본적인 공통 구조를 재사용이 가용하게끔 협업화된 형태로 클래스를 제공하는 것 => 프로그램을 만들기 위한 기본 틀 - 스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크로, 엔터프라이즈급 어플리케이션 개발을 위한 모든 기능을 종합적으로 제공화된 경량화된 솔루션 - 경량 컨테이너로 자바 객체를 담고 직접 관리하며, 객체의 생성 및 소멸, 라이프 사이클을 관리하는 객체 컨테이너 1. 스프링의 주요 특징 1) POJO (Plain Old Java Object) 방식 : 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 순수한 자바 객체를 의미 - 기존 Java EE의 EJB는 비즈니스 로직뿐만 아니..
-
[Java 자바] 14. 람다식Programming/Java 2022. 9. 14. 00:26
14-1. 람다식이란? - 익명 함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가까움 - "(매개변수) -> {실행코드} " 형태로 작성 // Runnable 인터페이스의 익명 구현 객체를 생성하는 코드 Runnable runnable = new Runnable() { public void run() {...} } // 람다식을 이용해 표현할 경우 Runnable runnable = () -> {...}; 14-2. 람다식 기본 문법 // 기본 형태 (타입 매개변수, ...) -> { 실행문; ... } // int 매개 변수 a 값을 콘솔에 출력할 때 (int a) -> {System.out.println(a);} // 매개 변수 타입은 런타임 시 대입값에 따라 자동으로 인식될 수..
-
[Java 자바] 12. 멀티 스레드 ④ 스레드풀Programming/Java 2022. 9. 12. 20:08
12.9 스레드 풀 - 병렬 작업 폭증으로 인한 스레드의 폭증을 막기 위해 사용 - 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 처리 - 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리 - 작업 처리 요청이 폭증하여도 스레드 전체 개수가 늘어나지 않아 성능의 급격한 저하 방지 12-9-1. 스레드풀 생성 및 종료 [ 스레드풀 생성 ] - ExecutorService 구현 객체(스레드풀)는 Executors 클래스의 두 가지 메소드 중 하나로 생성 가능 메소드명 (매개 변수) 초기 스레드 수 코어 스레드 수 최대 스레드 수 newCachedThreadPool() 0 0 Integer.MAX_VALUE newFixe..
-
[Java 자바] 12. 멀티 스레드 ③ 데몬 스레드, 스레드 그룹Programming/Java 2022. 9. 12. 15:39
12-7. 데몬 스레드 - 주 스레드의 작업을 돕는 보조적 역할을 수행하는 스레드로, 주 스레드가 종료되면 강제적으로 종료됨 - setDaemon(true)를 호출함으로써 스레드를 데몬으로 만들 수 있음 - start() 메소드 이후 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생하므로 이전에 호출해야 함 - isDaemon(): 실행 중인 스레드가 데몬스레드인지 아닌지 확인 public static void main(String[] args) { AutoSaveThread thread = new AutoSaveThread(); thread.setDaemon(true); thread.start(); ... } 12-8. 스레드 그룹 - 관련된 스레드를 묶어..
-
[Java 자바] 12. 멀티 스레드 ② 동기화, 스레드 상태와 제어Programming/Java 2022. 9. 12. 15:19
12-4. 동기화 메소드와 동기화 블록 12-4-1. 공유 객체를 사용할 때 주의점 - 싱글 스레드 프로그램에서는 한 개의 스래드가 객체를 전부 사용하지만, 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우 발생 - 이 경우, 다른 스레드에 의해 객체가 상태 변경이 되어 의도와 다른 결과가 산출될 수 있기 때문에 주의해야 함 12-4-2. 동기화 메소드 및 동기화 블록 - 임계 영역 (critical section): 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역 => 자바에서는 이를 지정하기 위해 동기화 메소드와 동기화 블록을 제공 => 스레드가 객체 내부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 임계 영역의 코드를 실..
-
[Java 자바] 12. 멀티 스레드 ① 개념과 생성방법, 우선순위Programming/Java 2022. 9. 12. 14:02
12-1. 멀티 스레드란? 12-1-1. 프로세스와 스레드 - 프로세스: 운영체제에서 실행 중인 하나의 애플리케이션 - 멀티태스킹: 두 가지 이상의 작업을 동시에 처리하는 것 => 멀티태스킹이 꼭 멀티프로세스를 뜻하지는 않으며, 한 프로세스 내에서 두 가지 이상의 작업을 처리할 수 있음 => 멀티 스레드를 이용하여 한 프로세스 내에서 여러가지 작업을 가능하게 하는 것! - 멀티 프로세스들은 운영체제에서 할당 받은 자신의 메모리를 가지고 실행되기 때문에 상호 독립적 - 멀티 스레드로 동작하는 파일은 다른 스레드에서 오류가 발생하면 함께 영향을 받음 => 예외, 오류 처리에 주의해야 함 12-1-2. 메인 스레드 - 모든 자바 어플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작 - 기본적으로 ..