전체 글 (134) 썸네일형 리스트형 의존 자동 주입과 컴포넌트 스캔 의존 자동 주입 앞서 스프링의 DI 설정에 대해 살펴봤다. 설정 클래스는 다음과 같이 주입할 의존 대상을 생성자나 메서드를 이용해서 주입했다. 이 코드는 의존 대상을 설정 코드에서 직접 주입한다. 의존 대상을 설정 코드에서 직접 주입하지 않고 스프링이 자동으로 의존하는 빈 객체를 주입해주는 기능도 있다. 이를 자동 주입이라고 한다. 스프링 부트의 부상과 더불어 자동 주입 방식이 더욱 자주 쓰이게 되었다. => 설정코드에서 생성자 혹은 세터 메서드를 호출해 명시적으로 의존 설정을 해주어야 했다. 자동 주입을 하게되면 이러한 명시적 설정을 생략할 수 있다. @Autowired 어노테이션을 이용한 의존 자동 주입 스프링에서 의존 자동 주입을 설정하는 방법에는 여러가지가 있지만 주로 @Autowired 어노테이.. Spring DI DI는 Dependency Injection의 약자로 '의존 주입'이라고 번역할 수 있다. 여기에서 의존이란 객체 간의 의존을 의미하고, 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 '의존'한다고 표현한다. 의존하는 방법에는 여러가지가 있다. 가장 쉬운 방법은 의존 대상 객체를 직접 생성하는 것이다. 클래스의 필드에 대상 클래스 생성자를 통해 객체를 직접 생성한 뒤 사용할 수 있다. 하지만 Spring에서의 DI는 의존하는 객체를 직접 생성하는 대신 의존 객체를 전달받는 방식을 사용한다. 객체 조립기 DI를 사용하는 이유는 코드 변경에 유연하게 대처하기 위해서이다. 변경된 코드를 주입하는 경우 객체를 주입하는 코드 한 곳만 변경하면 된다. 그렇다면 객체를 생성하는 코드는 어디에 두어야 할까? 한 .. Spring ApplicationContext, IoC, Singleton 스프링은 객체 컨테이너 package chap02; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); Greeter g1 = ctx.getBean("greeter", Greeter.class); Greeter g2 = ctx.getBean("greeter", Greeter.class); System.out.println("(g1.. 스프링 빈과 의존관계 컴포넌트 스캔과 자동 의존관계 설정 서비스: 멤버 가입 비즈니스 로직 리포지토리: 데이터베이스, 저장, 불러오기 컨트롤러: 외부 요청을 받는다 컨트롤러가 서비스를 통해서 처리한다. 이를 컨트롤러가 서비스를 의존한다고 한다. 각 요소들(서비스, 컨트롤러, 리포지토리)들은 스프링 컨테이너에서 스프링 빈으로 관리된다. 멤버 컨트롤러에서만 멤버 서비스를 가져다 쓸 수 있어야 한다. 지금은 리포지토리가 new로 생성되어 다른 컨트롤러에서도 사용이 가능하다. 때문에 컨트롤러에서만 사용할 수 있도록 제한해야 한다.(의존성을 가져야 한다. 또한 하나의 인스턴스만 필요하다) =>의존관계를 설정해야 한다. 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다. 따라서 같은 스프링 빈이면 모두 같은 인스턴.. 스프링 회원 관리 예제 - 백엔드 개발 비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 컨트롤러: 웹 MVC의 컨트롤러 서비스: 핵심 비즈니스 로직 도메인: 비즈니스 도메인 객체 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 리포지토리는 아직 db가 선정되지 않았으므로 interface로 만든다. 나중에 구현 클래스로 변경이 가능하다. 초기 개발 단계에 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용한다. 회원 도메인과 리포지토리 만들기 도메인: 데이터의 형태를 설계한다. getter, setter함수를 포함한다. /domain/Memeber.java 리포지토리: Optional: Java8에 추가되었다. 검색 결과로 나온 null을 처리하는 방법 중 하나가 된다. 회원 리포지토리 테스트 케.. 스프링 웹 개발 기초 스태틱 컨텐츠 MVC(템플릿 엔진을 이용해 html을 동적으로 구성) API: JSON으로 내려주는 방식, 데이터만 내려주면 view단에서 알아서 구성 또한 서버끼리 소통할 때도 API를 사용한다. 정적 컨텐츠 spring boot는 static content를 기본으로 제공한다. url은 /resources/static폴더 안의 파일명으로 접근하면 된다. 요청은 톰캣이 먼저 받는다. 스프링 컨테이너에서는 항상 컨트롤러가 먼저 우선순위를 갖는다. hello-static과 관련된 컨트롤러가 없는 경우 /static 경로에서 해당되는 파일을 찾고 존재하는 경우 랜더링 해준다. MVC와 템플릿 엔진 view는 화면 구성만 담당한다. model이라는 구조에 데이터들을 담아서 view에 넘겨준다. controll.. Spring 프로젝트 환경설정 스프링부트 프로젝트 생성 Java 11 IDE: IntelliJ 자바 11로 변경하기 1) sudo vi ~/.bash_profile 입력하고 비번 입력 sudo vi ~/.bash_profile Password: 2) i 눌러 INSERT 모드로 전환하고 export 행의 버전 11로 변경 export JAVA_HOME=$(/usr/libexec/java_home -v 11) 3) ESC 키를 누르고 :wq 입력해서 저장후 종료 4) source ~/.bash_profile 입력 (source 명령어로 변경된 패스를 실행한다.) source ~/.bash_profile 5) 변경된 버전 확인 java -version java version "11.0.11" 2021-04-20 LTS *다른 방법 Fil.. 메이븐으로 스프링 시작하기 메이븐 설치 터미널에서 프로그램을 바로 실행하려면 PATH환경 변수를 설정 해 주어야 하지만, homebrew를 통해 maven을 설치해서 이에 대한 설정을 생략한다. https://mkyong.com/maven/install-maven-on-mac-osx/ 메이븐 프로젝트 생성 IntelliJ 메이븐과 그레이들 모두 동일한 폴더 구조를 사용한다. 처음 project wizard에서 Maven을 선택해 메이븐 프로젝트를 생성한다. 자동으로 기본 파일 구조가 생성된다. 다음으로 메이븐 프로젝트 설정 파일을 작성한다. 메이븐 프로젝트의 핵심은 pom.xml 파일이다. 모든 메이븐 프로젝트는 프로젝트의 루트 폴더에 pom.xml 파일을 갖는다. pom.xml은 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일.. 이전 1 2 3 4 5 6 7 ··· 17 다음 목록 더보기