87일 차 - IOC 개념 정리, 람다 (23.05.03)

yvonne·2023년 5월 3일
0
post-thumbnail

📂 DI(Dependecy Injection) - 의존성 주입

  • '의존성을 주입시켜준다'는 의미
  • 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식

  • 첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법 (완제품)
  • 두번째 방법은 외부에서 생성된 객체를 setter( )나 생성자를 통해 사용하는 방법 (조립) -> 주입 (Injection)



📂IoC(Inversion of Container) - 제어의 역전

  • 오브젝트의 생성, 사용 및 생명주기의 관리까지 제어권이 바뀌었다는 의미
  • 제어권을 스프링 프레임워크가 담당한다는 의미

📍 IoC를 사용하지 않을 때

  • 개발자가 객체를 직접 신규로 생성

📍 IoC

  • IoC에서는 개발자가 객체를 직접 생성하지 않고 프레임워크가 객체를 생성, 관리
  • 의존성 주입을 하게 되면, 아래 그림과 같이 역방향으로 객체를 주입
  • 스프링에서 IoC를 담당하는 컨테이너를 빈 팩토리 또는 애플리케이션 콘텍스트라고 부름


📂빈(Bean)

  • 스프링 프레임워크에서 관리하는 객체
  • IoC 컨테이너에 저장되고 관리하는 객체



📂IoC 컨테이너

  • 빈 객체를 관리하는 저장소




📝 람다와 스트림 (Lambda & Stream)

📂람다식(Lambda Expressions)

  • 메서드를 하나의 '식(expression)'으로 표현한 것

  • 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'라고도 한다.

메서드에서 이름과 반환타입을 제거하고 매개변수 선언부(파라미터)와 바디{ } 사이에 -> 를 추가

✔ LambdaExample.java

interface Printable {
	void print(String s);
}

//class Printer implements Printable {
//
//	@Override
//	public void print(String s) {
//		System.out.println(s);
//	}
//
//}

public class LambdaExample {
	public static void main(String[] args) {
		Printable prn = (s) -> {System.out.println(s);};

		prn.print("옥수수");
		System.out.println("난 기억나");
	}

}
  • 결과
profile
개발 연습장

0개의 댓글