DAY_072[국비] 자바 웹프로그래밍 과정

Bona의 블로그 입니다.·2023년 1월 16일
0

국비과정

목록 보기
72/99

 🌞 Day 072 

  • 프로젝트 발표, spring-framework



 🌈 프로젝트 발표 

  • 사업자 : 예약 취소 / 환불
  • 관리자 : 캠핑장 승인 / 거부
  • 사용자 : 예약 ⇒ 진행중 / 완료 구분하기




 🌈 Spring frameWork 

  • Spring Framework 란?
    • 경량 컨테이너자바 객체를 담고 직접 관리
    • 객체의 생성 및 소멸 그리고 라이프 사이클을관리
    • 언제든 Spring 컨테이너로부터 필요한 객체를 가져와 사용 가능
  • Spring의 장점

    • 구조화되어있어서 다른 사람의 코드도 파악하기가 훨씬 수월해졌다. (구조의 획일화)
  • 메이븐(Maven) VS 그래들(Gradle)
    : Spring Framework에는 두가지 방식이 있다.
    메이븐이 먼저 생겨났고 그래들이 후발, 쉽게 말하자면 메이븐이 원조이고 그래들은 점점 더 많이 사용하고 있는 후발주자,
    하지만 점점 둘 다 하나로 통합되어가는 추세 (뒤로 갈수록 비슷해지는 경향이다)

  • 수업에서는 메이븐 프로젝트로 진행




 🌈 첫 번째 프로젝트 

  • 간단하기 지금까지 배웠던 방식대로 JAVA프로그램을 만들어봄

 🌙 pom.xml 

  • 메이븐은 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다.
  • 아래의 코드는 가장 기본적인 pom.xml 필요한 것이 생기면 하나씩 추가하면 된다.


 🌙 class - MainClass 


 🌙 interface - Calculator 

    package first;

    public interface Calculator {
        // 반드시 오버라이딩 해야할 추상메서드 작성
        public int cal(int firstNum, int secondNum);
    }

 🌙 class - Sum 

    package first;

    public class Sum implements Calculator {

        @Override
        public int cal(int firstNum, int secondNum) {
            int result = 0;
            result = firstNum + secondNum;
            return result;
        }
    }

 🌙 class - Sub 

    package first;

    public class Sub implements Calculator {

        @Override
        public int cal(int firstNum, int secondNum) {
            int result = 0;
            result = firstNum - secondNum;
            return result;
        }

    }




 🌈 두 번째 프로젝트 

  • 객체 컨테이너를 사용하기

  • 스프링 프레임워크에서는 클래스의 객체 생성 및 운영이 다르게 운영된다.

  • new 인스턴스를 생성하지 않고,
    프로그램 시작시에 미리 생성&보관 하고 있다가 필요할 때 꺼내 쓰는 방법을 사용한다.

  • 만들어진 인스턴스의 보관장소를 "스크링 컨테이너"라고 부른다.

  • 현재 프로젝트에서 사용할 스프링 컨테이너는 applicationContext.xml이고, 기본 위치는 src/main/resources 폴더가 된다.

  • 스프링 컨테이너에 담겨 있는 객체들을 Bean이라고 부른다.

  • 스프링 컨테이너에 담겨 있는 빈을 필요할 때 꺼내 쓰려면 컨테이너의 사용권한을 갖고 있는 객체를 생성하여 사용한다.
    (GenericApplicationContext 객체를 생성하여 사용)


 🌙 class MainClass 


 🌙 class WalkClass 

  • 컨테이너에 생성 & 보관할 객체
    package com.ezen.sp02;

    public class WalkClass {

        public void move() {
            System.out.println("Walking~~!!");
        }
    }

 🌙 applicationContext.xml 

  • 스프링 컨테이너 역할을 할 xml파일
  • src/main/resources > applicationContext.xml




 🌈 세 번째 프로젝트 

  • 생성자에 전달인수가 필요하다면? 그런데 그 전달인수가 또 다른 클래스의 객체라면?

 🌙 class MainClass 


 🌙 interface Battery 

    package com.ezen.sp03.battery;

    public interface Battery {

        public int getBatteryValue();

    }

 🌙 class NomalBattery 

    package com.ezen.sp03.battery;

    public class NomalBattery implements Battery{

        int val;

        @Override
        public int getBatteryValue() {		
            return 0;
        }
    }

 🌙 class ChargeBattery 

    package com.ezen.sp03.battery;

    public class ChargeBattery implements Battery{

        int val;

        @Override
        public int getBatteryValue() {
            return 0;
        }

        public void charge(int value) {
            this.val = value;
        }

    }

 🌙 class ElectronicCar 

  • class ElectronicCar의 생성자는 1개이고 전달인수가 없다.

 🌙 class ElectronicRadio 

  • class ElectronicRadio는 생성자에 전달인수가 필요하고 이때 전달인수는 Battery라는 객체이다.

  • ElectronicCar와 ElectronicRadio는컨테이너에서 Bean으로 만들려면 각각 다른 방법을 사용해야 한다.


 🌙 applicationContext.xml 

  • ElectronicRadio는 전달인수가 필요한 생성자를 가지고 있으므로 bean을 만들때 NomalBattery, ChargeBattery객체를 생성해야 한다.




 📢 시험!!! 

 ⭐ 객체 의존 

  • 객체의존
    : 객체 생성시에 다른 객체의 존재 및 생성자로의 전달이 필수인

 ⭐ 의존주입 

  • 의존주입 (Dependency Injection)
    : 필요 객체를 생성자의 전달인수로 넣어주는 것





profile
제가 공부하고 공유하고 싶은 글을 올리고 있습니다.

0개의 댓글