Programming/Spring, SpringBoot
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
** 전과 같이 MyRoom (main) + Tape + TapeReader 클래스 활용. - MyRoom main --> XML 기반 컨테이너 구성 - Tape --> getter, setter 설정 - TapeReader --> setTape 설정 1. Setter 기반 주입 1) setter-config.xml 파일 생성 해당 링크에서 beans 태그 가지고오기 bean : 서비스에서 사용되는 비즈니스 객체. 현재 맥락에서는 TapeReader, Tape... bean 생성 id = 해당 bean의 고유한 이름 class = 해당 bean의 타입 (패키지 포함 풀네임) 2) MyRoom 클래스에서 xml 기반 컨테이너 구성. context 프로그램이 돌아가면서 기저에서 돌고 있는 설정 값들이나 정보..
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
dependency 링크 https://mvnrepository.com/artifact/org.springframework/spring-context >> maven repository에서 복사~ 4.0.0 dev.spring step01di 0.0.1-SNAPSHOT org.springframework spring-context 5.3.20 POM? (Project Object Model) : Maven 프로젝트를 구성하는 여러 메타 정보를 담고 있는 설정 파일. Maven이 프로젝트를 어떻게 빌드할찌, 필요한 의존성은 무엇인지 등에 pom.xml에 작성. POM.xml 내 기본 엘리먼트 : 생성하고자 하는 해당 프로젝트의 그룹 이름. 다른 라이브러리와 경로 중복되지 않도록 고유한 네이밍 지정. (프로..
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
factory를 통해 의존성을 낮춰보자! 일단 간단한 프로젝트 살펴보기 1. MyRoom (main) package dev.spring.step01dependency; public class MyRoom { public static void main(String[] args) { // 새로 구매한 비디오 테이프를 테스트하기 위해 테이프 리더를 생성 TapeReader reader = new TapeReader(); //테스트 수행 reader.test(); } } 2. Tape package dev.spring.step01dependency; public class Tape { String name; //테이프 이름 boolean isWorked; //정상 동작 여부 public Tape(String n..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/VATgq/btsy6jSAO2h/WS6hA56p2VaXD8uqrE45e1/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
대체 의존성 주입이 뭔지 1~~~~~~도 몰랐는데... 오늘 드디어 쪼금 이해한거 같다.... (됴륵) 레츠고~~~ 매번 new 연산자로 생성해주는 것이 아니라, 외부 컨테이너 (Factory/ IoC(Inversion of Control) Container/ 스프링 컨테이너)에서 인스턴스를 대신 생성(주입) 해주는 설정을 하여 클래스 간의 결합도를 낮추는 것! ==> DI를 활용한 느슨한 결합 (loose coupling) 클래스 A 에서 클래스 B의 인스턴스를 생성하고 메서드 호출하는 방식을 사용했었다. 그러면 두 클래스는 직접적인 연결이 되어있음. > 그러면 클래스 B가 변경되면 클래스A도 함께 변경되어야 한다는 불편함이 있다. ** IoC(Inversion of Control) 제어의 역전? : ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bxAHwj/btsvltFFexh/c4FKHeTEf27gtVmKXdN3IK/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
1) Authentication (인증) : 'A'라고 주장하는 주체가 'A'가 맞는지 확인하는 것. - 코드에서 Authentication : 인증 과정에 사용되는 핵심 객체. 2) Authorization (권한) : 특정 자원에 대한 권한이 있는지 확인하는 것. > 프로세스상 신분 '인증'을 거치고 신분인증이 되면 권한이 있는지 확인 후 서버 자원에 접근할 수 있도록 하는 순서. 3) Credential (증명서) : 인증 과정 중, 주체가 본인을 인증하기 위해 서버에 제공하는 것 (id, pwd 등) 4) AuthenticationManager(interface) : Authentication 객체를 받아 인증하고 인증되면 인증된 Authentication 객체를 돌려주는 메서드를 구현하도록 하는..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/267GL/btstK1i70uC/NjfHk6WS0acWsK2EjkEKl0/img.png)
![](https://tistory1.daumcdn.net/tistory/6581516/skin/images/no-image.jpg)
1) src>main>java 디렉터리 > com.nctclub.nctclubproject 패키지 : 자바 파일을 작성하는 공간. 자바 파일로는 스프링부트의 컨트롤러, 폼과 DTO, 데이터 베이스 처리를 위한 엔티티, 서비스 파일 등이 있다. 2) NctclubprojectApplication.java 파일 > 시작을 담당하는 파일. (+Application.java파일) > 위와 같이 반드시 `SpringBootApplication` 애너테이션이 적용되어 있어야 한다. 이 애너테이션을 통해 스프링부트의 모든 설정이 관리된다. 3) src>main>resources 디렉터리 > 자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간 templates 디렉터리 : 템플릿 ..