웹(Web) 69

스프링 어노테이션을 이용한 객체생성/초기값(@Value)

소스코드로 옮기는작업을 하는것이다. Component-scan이 꼭 필요함을 알려줌. 더보기 www.youtube.com/watch?v=DNrkw3pAsAM&list=PLq8wAnVUcTFWxnsrMu5kS_jt_o8gpEiTR&index=15 www.youtube.com/watch?v=pyMzPpK4uXk&list=PLq8wAnVUcTFWxnsrMu5kS_jt_o8gpEiTR&index=16 "spring.di.ui"라는 패키지 안에 들어가서 클래스들이 있을텐데, 거기 들어가서 클래스 읽어줄래? 스캔해봐서 component가 있는지 찾아봐. 거기 컴포넌트가 있으면 객체화 시켜줘. @Component를 읽으면 안쪽에 있는 걸(Autowired부분) 읽어버림. 따라서 XML부분에서는 객체 생성하는부분을 다..

스프링 어노테이션(Annotation), @AutoWired과 @Qualifer

1. XML로 설정 XML을 매번 바꿔야되므로 귀찮으니 발전해서 소스코드를 읽게해줌. -> 따라서 java코드에서 @Component를 인식해서 객체화함 @Autowired를 통해서 Xml에 있던객체를, 코드에다가 객체를 모두 박아버리는것이다. 위 한줄만 추가해주면 된다. => 객체를 만들어놓고 "그 안을 들여다봐라" 라는 뜻 => 그래야 @Autowired를 통해서 안을들여다보고 자동으로 설정 (추가해주지 않으면 탐색을 하지 않으므로 NullPointerError 뜬다.) @Autowired : 자동으로 연결해준다는것은 문제가 될 수 있다. @Qualifer : 객체가 여러개일때 식별이 모호할경우 명시해주기 위해 사용한다. bean에 모호한 exam이 여러개 등록되어있다. id="exam"으로 하면 @..

스프링 IoC 컨테이너 사용(ApplicationContext 사용)

"어떻게 만들어달라"는 지시서를 전송 1. maven사용 -> spring.io 라이브러리를 pom.xml에 불러옴. 2. ApplicationContext 사용. ClassPathXmlApplicationContext로 생성. 두가지 방식 다 된다. 첫번째 방법: Bean이라는 녀석을 만드는데 이름가지고 "console"이라는 애를 꺼내면, 형식변환을 해서 써야함. => 객체에 대한 형식을 모르기때문에 Object형으로 나오므로 형변환해야함. 두번째 방법: 자료형 명으로 꺼낼 수 있다. => 인터페이스 형식(ExamConsole.class)에 참조된 녀석을 찾아서 거기에 맞게 얻어다줌. 값 형식 DI 위처럼 property value값을 넣어줄 수 있다. 생성자로 받는것은 java코드는 아래와같다. 그..

IoC컨테이너(Inversion of Control)란

컨테이너에 담겨져있는것이 무엇이냐에 따라서 '무슨 컨테이너'라고 불린다. 앞서 우리는 부품을 Dependency에 비유했다. (이전글 : 의존성 주입 참고) 2021.04.04 - [웹(Web)/백엔드(Backend)] - 의존성주입(DI, Dependency Injection)이란 부품 컨테이너 => Dependency 컨테이너 => IoC 컨테이너 그렇다면 왜 IoC컨테이너라고 부를까? Dependency 컨테이너라고 부르지 않고 말이다.. 주문서에다가 어떤부품을 생성해주세요 -> 조립해주세요해서 담아달라하면 이렇게 생성된다. 제품 조립 순서를 짚고 넘어가자. 소비자의 경우 A가만들어지면 B가만들어지고...D가 만들어진다. 따라서 소비자는 뒤에있는 부분은 알아서 만들어져서 조립과정을 모름 하지만 조립..

의존성주입(DI, Dependency Injection)이란

1. 객체 A는 B,C의 기능을 사용한다고 볼수있지만, 객체 B,C의 기능에 의존한다. 2. A가 B,C의 기능이 필요한경우 외부에 있는 갑한테 B,C의 기능을 주입받는다. 이렇게 외부에서 의존성을 주입시켜주고 관리하는것이 JAVA에서는 "Spring" 이다. 위의 1,2번 케이스를 개발자가 직접 해당 객체의 라이프사이클들을 다 관리하면(강한결합) 힘들다. 따라서 외부에서 객체B,C와 같이 만들어서 주입만시켜주는 경우(약한결합) 개발자가 편해진다. 객체지향 프로그래밍에서는 위처럼 "약한결합"을 사용하기 위해 Spring을 이용한다. 아래는 예시코드이다. 위처럼 객체를 직접 만들면 강한결합, 가져오면 약한결합이다. Why 약한결합사용? class에서 생성자를 private으로 바꾸면 강한결합에서는 인식할수..

서블릿 매핑(Servlet Mapping)이란

위의 full path는 서블릿의 경로를 통해서 포트번호, 서블릿이름, 해당서블릿의 위치가 보인다. 그래서 보안 취약함. 따라서 mapping을 사용하는데, context-path는 그대로 똑같이 사용하지만, 간략하게 "닉네임을 준다"라고 생각하면 편하다. 그 "닉네임을 주는 것"을 servlet Mapping이라고 한다. 방법1: XML파일을 이용하는방법(아직 사용하긴함) 동적 웹 프로젝트에서 web.xml에서 서블릿을 등록함 패키지명을 포함한 경로에서 마지막 부분인 서블릿이름을 에 넣고 에 "닉네임"으로 사용할 것을 입력해주면 매핑 성공! 방법2: Java Annotation을 이용한 매핑(현대적) servletEx.java와 같은 파일에서 어노테이션을 하면 바로 출력된다. 위의 두가지 방법으로 각각..

스프링(Spring) 프로젝트의 폴더 구조

- Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 먼저 Spring MVC 템플릿으로 스프링 프로젝트를 하나 생성해보겠습니다. 빌드툴은 메이븐을 사용합니다. 폴더 구조가 꽤 복잡한데, 하나하나 살펴보도록 하겠습니다. 1. src/main/java 자바(.java) 파일이 모여있는 곳입니다. 패키지로 잘 분리해서 자바 클래스를 생성해 사용하면 됩니다. 스프링에서 이미 MVC 패턴의 서블릿 구조를 잡아주기 때문에 따로 서블릿을 만들 필요 없이 스프링 구조에 맞춰 클래스 파일들..

<우아한 스프링 부트> 정리

www.youtube.com/watch?v=z0EaPjF3pCQ 1. 어플리케이션을 만들어서 어떻게 배포하냐에 따라 2가지선택. JAR(Java Archive) : 기본 이것부터 사용해보길 권장. WAR(Web Application Archive) : 톰캣같은곳에 배포할때 사용. 2. 의존성추가 : 스프링부트가 제공해주는 주요 기능 중 하나 pom.xml에는 버전정보가 없지만 dependency management에 버전이 정의가 되어있다. springboot에 버전을 명시하지않아도 되는것은 장점 + 현재 버전에 최적화되어있는것을 알아서 찾아놨기때문에 springboot가 좋은것이다. springboot가 관리해주지 않는 dependency는 버전 명시해야됨. 3. 프로젝트 생성 1. 메이븐에서 실행 :..

JavaScript 정리3(Object, 프로퍼티 전달, 배열 출력, clone)

Object 전달 const name ='evan'; const age = 44; print(name, age); function print(name, age){ console.log(name); console.log(age); } 위와같이 전달하게 되면 매개변수가 많아지면 다 받기 곤란. const evan = {name : 'evan', age:4}; function print(person){ console.log(person.name); console.log(person.name); } 따라서 이처럼 객체로 전달하게 되면 처리하기 편하다. 프로퍼티 변수를 나중에 따로 선언해도됨. 예시) hasJob 프로퍼티 주목 function print(person){ console.log(person.name)..