23.02.09

이동욱·2023년 8월 6일
0

NaverCloudCamp

목록 보기
23/42

학습내용

  1. 형상관리
  2. git
  3. framework란
  4. Bean Container
  5. IOC
  6. constructor injection, setter injection

형상관리

  1. 형상관리란?
  • source code를 관리해주고 branch 개념을 통해 source code 버전을 관리할 수 있는 시스템이다.

git

  • 대표적인 형상관리 시스템이며 아래의 개념들이 존재한다
    commit message rule 만들기
  1. branch
    source code의 개별적 작업 공간이며 각 branch마다 독립성이 보장된다.
    일반적으로 master branch에는 최신버전을 유지하고 해당 branch에서는 code edit을 하지 않는다.

  2. check out
    branch간 이동 한다.

  3. Merge
    다른 branch의 source code를 내 branch로 가져온다.
    source code를 가져오는 작업이기에 동기화 문제가 발생 가능하다!, 항상 master에서 최신 버전을 내 branch로 merge한 후 작업하기

  4. conflict
    최신 source code가 아닌 code를 merge 하였을때 발생하는 문제
    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

  5. repository
    source code를 관리하는 저장소

  6. commit
    내 branch의 source code 변경 사항을 repository에 알려주는 작업

git 주의사항
1. master => no edit
2. branch new work는 최신버전 merge후 작업
3. merge는 가져오는 경우니 신중하게 사용

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

framework란

  • 특정개념, 문제 영역을 해결한 재사용 확장 가능한 lib
  • 직접 만들었던 모든 request를 받고 request에 맞는 action을 실행시켜주는 ActionServlet, request의 url에 따라
    알맞은 Action을 반환하는 RequestMapping등을 .jar 파일로 제공해주는것이 framework 기능이다.

Bean Container

public class HelloTestApp01 {
	
	///main method
	public static void main(String[] args) {
		Hello hello = new Hello();
		hello.printMessage();
	}
	
}

"hello"라는 메시지를 출력해주는 Hello class를 100개가 넘는 class가 dependency관계로 사용하고있다 라고 가정해보자.
만약 Hello라는 class를 다른 class로 변경한다면 100개의 class를 수정해야한다.

public class HelloTestApp02 {
	public static void main(String[] args) {
		HelloFactory helloFactory =	HelloFactory.getInstance();
		
		helloFactory.setConfigResource("./src/main/resources/config/hello.properties");
		Hello hello = helloFactory.getBean("instance.one");
		
		hello.printMessage();
	}	
}

class를 인스턴스화하여 반환하는 helloFactory class를 만든 뒤 해당 factory에 모든 bean들의 이름과 위치를 key : value로
저장해놓은 properties파일을 전달하면 helloFactory는 "instance.one"에 해당하는 bean을 반환한다.
따라서 100개의 class를 수정할 일 없이 properties 파일에 "instance.one"에 해당하는 bean만 변경하면 모든 class의
bean을 변경 가능하다.

public class HelloTestApp03UseSpring {
	public static void main(String[] args) {
		
		BeanFactory factory = new XmlBeanFactory( new FileSystemResource("./src/main/resources/config/hello.xml"));

		Hello hello = (Hello)factory.getBean("hello");
		hello.printMessage();
	}	
}

framework는 이러한 문제 영역을 해결하기 위해 BeanFactory라는 라이브러리를 제공하여 우리가 factory를 직접 만들지 않고
위 기능을 사용 할 수 있으며 원리를 알고있다면 framework를 사용해야하는 이유이다.
BeanConatainer는 이러한 Bean의 생성, 의존성 주입뿐 아니라 생명주기까지 관리해주는 container이다.

IOC

spring framework의 Bean Container는 bean의 생성, 실행, 의존성 주입, 생명주기 관리 역할을 수행한다
이는 code에 대한 제어권을 사용자가 가지고있는것이 아니라 Container가 가지고있기에 제어의 역전이 발생하며 이를
IOC(Inversion of control)이라 한다.

constructor injection, setter injection

제어의 역전에 의해 의존성 주입은 코드 내부에서 발생하는것이 아닌 외부에서 발생하게된다.
외부에서 dependency를 주입해주는 방법이 constructor injection과 setter injection이다.

public class DiceTestApp02 {
	public static void main(String[] args) {
		
		//constructor injection
		Player02 player01 = new Player02(new DiceAimpl());
		
		//setter injection
		Player02 player02 = new Player02();
		player02.setdice(new DiceAimpl());
	}
}

question

Q. Build Pathe란
A. build란 설정파일, 실행파일, 기타 리소스들을 모아 실행 가능한 파일로 변경하는 과정이다
BuildPath란? build를 하기 위해 필요한 요소들의 위치를 지정해둔 것이다.

profile
Backend Developer

0개의 댓글