Spring
스프링이란?
자바를 이용해 웹 애플리케이션을 개발할 때 주로 사용하는 기술
스프링 프레임워크의 특징
- 의존 주입(Dependency Injection: DI) 지원
- AOP(Aspect-Oriented Programming) 지원
- MVC 웹 프레임워크 제공
- JDBC, JPA 연동, 선언적 트랜잭션 처리 등 DB 연동 지원
Maven
pom.xml
- 메이븐 프로젝트 설정 정보 관리 파일
- 의존 모듈이나 플러그인 등에 대한 설정을 담는다
<dependencies>
- 메이븐은 한 개의 모듈을 아티팩트라는 단위로 관리
- dependency에 설정을 추가한다는 것은 소스 코드를 컴파일하고 실행할 때 사용할 클래스 패스에 spring-context 파일을 추가한다는 것을 의미
메이븐 리포지토리
- pom.xml 설정 후, 콘솔창에서 mvn compile 입력 시 다운로드
import
- existing maven projects
Gradle
build.gradle
- 그래들 설정 정보 관리 파일
dependencies{}
- 메이븐과 동의
그래들 리포지토리
- build.gradle 설정 후 gradle wrapper 명령어 실행해 래퍼 파일 생성
- gradlew compileJava 명령어를 실행해 빌드
import
- existing gradle projects
Maven vs Gradle
Maven > Gradle
- 현업에서 많이 쓰인다
Maven < Gradle
- 빌드타임이 100배 빠르다
- Build라는 동적 요소를 XML로 정의하지 않아도 된다
- 별도의 빌드스크립트를 통하여 사용할 애플리케이션 버전, 라이브러리 항목 등을 설정할 수 있다
- 스크립트 언어로 구성되어 있기 때문에 변수 선언, if, else, for 등의 로직 구현이 가능하다
예시
Greeter.java
콘솔에 간단한 메시지를 출력하는 자바 클래스
public class Greeter {
private String format;
public String greet(String guest) {
return String.format(format, guest);
}
public void setFormat(String format) {
this.format = format;
}
}
AppContext.java
스프링 설정 파일
@Configuration
- 해당 클래스를 스프링 설정 클래스로 지정
- 스프링은 객체를 생성하고 초기화하는 기능을 제공
@Bean
- 스프링이 생성하는 객체
- 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록
- 메서드의 이름은 빈 객체를 구분, 참조할 때 사용
- 객체를 생성하고 알맞게 초기화해야 함
@Configuration
public class AppContext {
@Bean
public Greeter greeter() {
Greeter g = new Greeter();
g.setFormat("%s, 안녕하세요!");
return g;
}
}
Main.java
main() 메서드를 통해 스프링과 Greeter 를 실행하는 자바 클래스
AnnotationConfigApplicationContext
- 자바 설정에서 정보를 읽어와 빈 객체를 생성하고 관리
- AppContext 클래스를 생성자 파라미터로 전달
- AppContext에 정의한 @Bean 설정 정보를 읽어 와 Greeter 객체를 생성하고 초기화
- getBean() 메서드는 AnnotationConfigApplicationContext가 읽어와 생성한 bean 객체를 검색할 때 사용
import org.springframeword.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(AppContext.class);
Greeter g = ctx.getBean("greeter", Greeter.class);
String msg = g.greet("스프링");
System.out.println(msg);
ctx.close();
}
}
Controller
사용자 요청 처리(action)
String action = request.getParameter("action");
switch(action) { // 자동으로 가능
case "View":
View(request, response); // 자동으로 불가능
break;
}
method를 이용해서 data를 get 하는 작업
- Dto(request.getParameter())
- service가 가지고 있는 비즈니스 로직을 call
- return "path"
String member = request.getParameter("member"); // 자동으로 세팅
Member dto = service.login(memberId, memberPw); // 자동으로 불가능
response.sendRedirect(request.getContextPath() + "/index.jsp");
S service;
private MemberDao init() {
s = s.getInstance(); // 싱글톤: 자동으로 생성
}
Controller > Service > Dao > Data Source(DB) // 자동으로 세팅
- new가 사라지고 container가 자동으로 생성
- xml, annotation으로 설정하면 자동으로 세팅 가능
'프로그래밍 > SPRING' 카테고리의 다른 글
06. AOP (0) | 2022.04.26 |
---|---|
05. DI 적용 (0) | 2022.04.24 |
04. DI (0) | 2022.04.23 |
03. Spring Framework (0) | 2022.04.23 |
02. IoC & Container (0) | 2022.04.17 |