[2023.10.27] 개발자 교육 25일 차 : 강의-복습, 환경설정, 인스턴스 [구디 아카데미]

DaramGee·2023년 10월 27일
0

오늘 정리

인스턴스화? 단순히 객체를 선언하고 생성하는 것이 아닌 상황에 따른 생성 위치의 선정과 그 방법 또한 다양하다.

강의 내용

  • 번들러??
    • 웹개발 시 화면구현을 관리하고 번들링하는 도구
    • 웹구성을 위한 파일의 증가 → 어려움 발생 →번들러 등장
      • 중복이름 충돌(많은 개발자)
      • 파일전송 속도 문제
    • 종류
      • PARCEL
    • 여러 파일을 모아 합쳐서(리빌드) 성능 업그레이드의 역할

  • 서버 측 개발 위한 설정
    • Node.js는 JavaScript 런타임 환경 제공 → JavaScript를 서버측에 실행할 수 있게 해 줌.
    • Tomcat은 웹 실행을 위한 웹 애플리케이션 서버 → Java의 호스팅 및 관리 가능
      JavaTomcatNode.js
      백엔드 로직 개발Java의 웹 호스팅 관리프론트엔드 개발 서버 구동

  • 자바 클래스 라이프 사이클(생성 - 활용 - 소멸)
    • 메소드 요청 순서에 따라 예외 상황들이 발생할 수 있음. 트러블 슈팅을 해야한다면 요청순서와 위치 또한 고려할 필요가 있음.

      package bclass.step2;
      
      import java.util.StringTokenizer;
      
      class Life1{
      	/*선언부*/
      	String s = null; //게으른 인스턴스화
      	/*메소드-초기화*/
      	public void init() {
      		s = new String("300|kiwi");
      	}
      	/*메소드-자원활용*/
      	public void service() {
      		StringTokenizer st = new StringTokenizer(s,"|");
      		st.nextToken(); //300
      		String who = st.nextToken(); //kiwi
      		System.out.println(who);      //kiwi 
      	}
      	/*메소드-자원반납(소멸)*/
      	public void destroy() {
      		if(s != null) {
      			s = null;
      		}
      	}
      }
      public class LifeMain1 {
      
      	public static void main(String[] args) {
      		Life1 life = new Life1();
      //		life.service(); //s null인 상태 -> 터짐 , 초기화가 먼저임.
      		life.init();
      //		life.destroy(); //canidate 상태 - gc에게 찜 -> 아래에서 값을 사용할 수 없음. 
      		life.service(); //kiwi
      		life.destroy(); //종료
      	}
      }
  • 스프링에서는 개발자가 절대 인스턴스화를 하지 않는다.
    • 스프링F/W에서 직접 인스턴스화를 제어
    • 왜?
      • 의존성주입(Dependency Injection)을 사용해 객체 간 의존성을 관리 → 결합도 낮춤
      • 스프링의 빈(Bean)은 생성, 초기화, 소멸 등 라이프서클을 관리 등
    • 덕분에 개발자는 다른 로직에 집중하여 개발을 할 수 있는 환경이 됨.

  • 인스턴스화 → 필요한 객체를 주입 받는 것(=관계가 있는 객체 생성, 의존)
    1. A a = new A();
    2. A a = null; ->게으른 인스턴스화
      a = new A();
      <aside>
      💡 **게으른 인스턴스화???**
      일단 선언을 한 뒤 필요할 때(개발자, 유저, 스프링 - 주체 다양) 사용할 수 있다.
      
      </aside>
    3. A a = B.getInstance(); -> 싱글톤 패턴(하나다, static 대신 사용)
    4. Super s = new Sub(); -> 선언부 != 생성부(다형성)
      인터페이스 s = new 구현체클래스();
      추상클래스 s = new 구현체클래스();
      <aside>
      💡 **인터페이스, 추상클래스?**
      인터페이스는 기능적 관점에서 결합도 낮추며(implements) 재정의 사용하는 컨벤션
      추상클래스는 서비스의 확장과 관련된 관점, 결합도 높음(extends)
      
      </aside>

강의 마무리

  • Java 학습 기간 종료 → 전체적인 복습 필요

0개의 댓글