# EJB(Enterprise JavaBeans)
- 동시 접속자수가 10,000이상 사이트 구축시 고려하는 컴퍼넌트 기술입니다.
- 안정적인 트랜젝션이 필요한 사이트 구축시 사용합니다.
- 접속자수가 많은 공공기관, 기상청, 병무청, 금융... 기업등에서 집중적으로 사용합니다.
- 속도는 느리지만 개발자에게 많은 자동화된 기능을 제공해서 분산 시스템 구축을 쉽게 해줍니다.
- 기초기술(JSP, BEANS, Servlet, Trasnsaction, Connection Pooling)을 알아야 EJB를 사용할 수 있습니다.
- Weblogic, zeus등을 주로 사용합니다.
● 단점
- 복잡한 프로그래밍 모델을 사용합니다.
- 필요없이 중복 또는 종속적인 코드가 많이 발생합니다.
- 객체지향이지 않습니다.
- 개발 생산성이 떨어집니다.
# Spring
- 쿠기와 부하 측면에서 경량급 컴퍼넌트입니다.
- 확장이 높습니다.
- 의존성 주입(DI)을 지원합니다.
- 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 부르기도 합니다.
- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있습니다.
● 단점
- 따로 배워야합니다.
- 초기세팅이 어렵습니다.
# Spring BooT
스프링 프레임워크를 사용하는 프로젝트를 간편하게 설정할 수 있는 스프링 프레임워크 서브 프로젝트라고 할 수 있습니다.
● 특징
- 단독 실행 가능한 스프링 애플리케이션을 생성합니다.
- 최소한의 초기 스프링 구성으로 가능한 빨리 시작하고 실행할 수 있도록 설계되었습니다.
- 웹 컨테이너를 내장하고 있어 최소한 설정으로 쉽게 웹 어플리케이션을 만들 수 있습니다.
● 주소 관련 Annotation
@RestController : 적용된 CLASS가 REST API로 동작 하도록 설정합니다.
@RequestMapping : 외부에 주소를 노출하는 지 설정합니다.
* @RequestMapping, @Controller, HTTP GET, POST, PUT, DELETE등 적용 가능. method를 지정하지 않으면 전부 동작합니다.
@GetMapping : RequestMapping method를 분리한 하위 개념으로 Get Method에만 동작합니다.
@PostMapping : RequestMapping method를 분리한 하위 개념으로 Post Method에만 동작합니다.(insert 할 때)
@PutMapping : RequestMapping method를 분리한 하위 개념으로 Put Method에만 동작합니다.(update 할 때 - @PatchMapping 포함)
@DeleteMapping : RequestMapping method를 분리한 하위 개념으로 Delete Method에만 동작합니다.
★ 스프링 부트는 객체를 리턴하면 자동으로 JSON라이브러리가 JSON형식으로 출력합니다.
예시 1)
@RestController
@RequestMapping("/api") // localhost:8080/api
public class GetController {
// localhost:8080/api/getMethod
@RequestMapping(method= RequestMethod.GET, path = "/getMethod")
public String getRequest(){
return "getMethod 호출";
}
}
예시 2)
@RestController
@RequestMapping("/api") // localhost:8080/api
public class GetController {
// localhost:8080/api/getParameter?id=apple&pass=1234
@GetMapping("/getParameter")
public String getPara(@RequestParam String id, @RequestParam String pass){
System.out.println("id : " + id);
System.out.println("pass : " + pass);
return "getPara() 호출";
}
}
예시 3)
/*
id
name
email
age
*/
// localhost:8080/api/getMultiParameter?id=apple&name=김사과&email=apple@apple.com&age=20
@GetMapping("/getMultiParameter")
public String getMultiPara(
@RequestParam String id, @RequestParam String name,
@RequestParam String email, @RequestParam int age
){
System.out.println("id : " + id);
System.out.println("name : " + name);
System.out.println("email " + email);
System.out.println("age " + age);
return "ok";
}
예시 4) 객체로 만들어보기
package com.koreait.day1.model;
public class MultiParam {
String id;
String name;
String email;
int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
// localhost:8080/api/getMultiParameter?id=apple&name=김사과&email=apple@apple.com&age=20
@GetMapping("/getMultiParameter")
public MultiParam getMultiPra(MultiParam multiParam){ // 한개일때는 @RequestParam 써주지않아도된다!
System.out.println("id : " + multiParam.getId());
System.out.println("name : " + multiParam.getName());
System.out.println("email " + multiParam.getEmail());
System.out.println("age " + multiParam.getAge());
return multiParam;
}
}
* 스프링 부트는 객체를 리턴하면 자동으로 JSON라이브러리가 JSON형식으로 출력합니다.
예시 5) POST 방식으로 받을 시
package com.koreait.day1.controller;
import com.koreait.day1.model.MultiParam;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
// "/api" - 메소드의 mapping되는 주소만 다르면 된다 // 주소가 같더라도 메소드형식만 다르면된다.
public class PostController {
// localhost:8080/api/postMethod
@PostMapping(value = "/postMethod")
public MultiParam postMethod(@RequestBody MultiParam multiParam){
// RequestBody : POST는 데이터를 받을 때 body를 통해서 받기 때문에 이름이 body 이다
return multiParam;
}
}
'🎨 Programming > Spring' 카테고리의 다른 글
[Spring] Servlet과 Spring Web MVC (0) | 2023.02.22 |
---|---|
롬복(Lombok) 설치 및 적용 (0) | 2020.11.04 |