JDBC란? 💡 JDBC: DB에 접근할수 있도록 Java에서 제공하는 API (Java Database Connectivity) Spring JDBC 💡Spring JDBC: JDBC의 단점을 보완하여 더 편리한 기능을 제공 Connection 열기와 닫기 Statement 준비와 닫기 Statement 실행 ResultSet Loop처리 Exception 처리와 반환 Transaction 처리 JDBC 프로그래밍의 단점을 보완하는 스프링 구조적인 반복을 줄이기 위한 방법은 템플릿 메서드 패턴과 전략 패턴을 함께 사용하는 것이다. 스프링은 바로 이 두 패턴을 엮은 JdbcTemplate 클래스를 제공한다. 💡 JDBC Template: Spring JDBC접근 방법중 하나로, 내부적으로 Plain JD..
뒤에서 설명할 트랜잭션의 처리 방식을 이해하려면 AOP(Aspect Oriented Programming)를 알아야 한다. 프로젝트 준비 aspectjweaver 의존 추가 build.gradle에 추가 implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.8.13' 스프링의 AOP 기능은 spring—aop 모듈이 제공하는데 spring—context 모듈을 의존 대상에 추가하면 spring-aop 모듈도 함께 의존 대상에 포함된다. 따라서 spring—aop 모듈에 대한 의존을 따로 추가하지 않아도 된다. aspectjweaver 모듈은 AOP를 설정하는데 필요한 애노테이션을 제공하므로 이 의존을 추가해야 한다. 프록시와 AO..
컨테이너 초기화와 종료 // 1. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext. class); // 2. 컨테이너에서 빈 객체를 구해서 사용 Greeter g = ctx.getBean( "greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); // 3. 컨테이너 종료 ctx.close(); 컨텍스트 객체 생성 시, 스프링 컨테이너 초기화. 스프링 컨테이너는 설정 클래스에서 정보를 읽어와 알맞은 빈 객체를 생성하고 각 빈을 연결(의존 주입)하는 작업을 수행 컨테이너 초기화가 완료되면 컨테..
📌 자동 주입과 함께 사용하는 추가 기능이 컴포넌트 스캔이다. 컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능이다. 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록할 수 있으므로 컴포넌트 스캔 기능을 사용하면 설정 코드가 크게 줄어든다. @Component 애노테이션으로 스캔 대상 지정 @Component @Component("infoPrinter") @Component 애노테이션에 값을 주었는지에 따라 빈으로 등록할 때 사용할 이름이 결정된다. 값을 주지 않을 때에는? @Component 애노테이션이 붙은 클래스 이름을 따와 빈 이름으로 사용한다. 이때 첫 글자를 소문자로 바꾼 이름을 사용한다. ex) MainClass → mainClass @ComponentS..
@Autowired 💡 @Autowired: 자동 주입 기능, 스프링이 알아서 의존 객체를 찾아 주입한다. 의존을 주입할 대상에 애노테이션을 붙이기만 하면 된다. @Autowired 애노테이션을 붙이면 설정 클래스에서 의존을 주입하지 않아도 된다. 스프링이 해당 타입의 빈 객체를 찾아서 필드에 할당한다. 일치하는 빈이 없는 경우 빈이 없는 경우 Error creating bean with name '—-'(UnsatisfiedDependencyException) 같은 에러 메시지가 나온다. 주입 대상에 일치하는 빈이 2개 이상일 경우 @Bean public MemberPrinter memberPrinter1() { return new MemberPrinter() ; } @Bean public Member..
의존이란? DI('Dependency Injection’)의 약자로 우리말로는 ‘의존 주입’ 이라고 번역한다. 이 단어를 이해하려면 ‘의존’이 뭔지 알아야 한다. 다음 코드를 살펴보자. import java.time.LocalDateTime; public class MemberRegisterService{ private MemberDao memberDao = new MemberDao(); public void regist(RegisterRequest req){ Member member = memberDao.selectByEmail(req.getEmail.()); if(member != null){ // 이메일로 회원 데이터(Member 조회); throw new DuplicateMemberExceptio..
들어가며 스프링이란? 의존 주입(Dependency injection: DI) 지원 AOP(Aspect-Oriented Programming) 지원 MVC 웹 프레임워크 제공 JDBC, JPA 연동, 선언적 트랜잭션 처리 등 DB 연동 지원 이외에도 스케줄링, 메시지 연동(JMS), 이메일 발송, 테스트 지원 등 자바 기반의 앱을 개발하는데 다양한 기능을 제공해주는 프레임워크이다. 스프링에 관련된 프로젝트는 다양하다. 이중에 자주 사용되는 것은 다음과 같다. 스프링 데이터: 적은 양의 코드로 데이터 연동을 처리할 수 있도록 도와주는 프레임워크 스프링 시큐리티: 인증/인가와 관련된 프레임워크로서 웹 접근 제어, 객체 접근 제어, DB · 오픈ID · LDAP 등 다양한 인증 방식, 암호화 기능을 제공 스프..
나: 이제 슬슬 스프링 공부를 해볼까 ~ ???: 어림없지! could not install gradle distribution from 'https://services.gradle.org/distributions/gradle-7.4.1-bin.zip'. the cached zip file Could not create parent directory for lock file C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\jbr\wrapper\dists\gradle-7.4.1-bin\58kw26xllvsiedyf3nujyarhn\gradle-7.4.1-bin.zip.lck https://start.spring.io/ 사이트에서 프로젝트를 만들어 빌드 했을 때, 마..