SpringBoot/day53 / 23.11.21(화) / (핀테크) Spring 및 Ai 기반 핀테크 프로젝트 구축

허니몬·2023년 11월 21일
0
post-thumbnail

Spring boot


spring.io

jar 압축 풀기

압축 풀기


setting
General - Content Types - Java Class File - Default encoding > UTF-8
General - Workspace - Text file encoding > Othder: UTF-8
Java - Instaled JREs : 설정

MarketPlace

find: web 검색

3개 체크

confirm - agreements - finish

자동 재시작

Window - preferences - Web 생김 - CSS, HTML, JSP : UTF-8

다시 Marketplace - find: spring

3.9.14 RELEASE - Install - agree - confirm - finish


프로젝트 생성
file - new - Spring Starter Project

Spring Boot Version : 3 이상으로 가려면 JDK 17 이상으로 가야 함

>> 2.7.17

Web - Spring Web

로젝트 생성 후 pom.xml 들어가보면
project 태그에 에러가 떠 있음
https:maver~~~ 부분에 에러가 있는데
http 로 s 를 지워주면 됨


Spring_Boot.txt

# 스프링 부트의 장점
1. 라이브러리 관리 자동화
	: 스프링 부트에서는 스타터(starter)라는 것을 이용해 특정 기능에 필요한
	  라이브러리의 의존성을 간단하게 처리할 수 있다.
2. 설정의 자동화
	: 프로젝트에 추가된 라이브러리를 기반으로 실행에 필요한 환경을 자동으로 설정해 준다. 
3. 라이브러리 버전 자동관리
	: 스프링 부트 버전에 해당하는 스프링 라이브러리 뿐만 아니라,
	  의존 관계에 있는 서드파티 라이브러리도 호환되는 버전으로 다운로드 해준다.
4. 테스트 환경과 내장 톰켓
	: 스프링 부트로 생성한 프로젝트에는 JUnit 을 비롯한 테스트 라이브러리들이 
	  기본적으로 포함되어 있고, 톰켓서버를 내장하고 있기 때문에 빠르게 실행 결과를 볼 수 있다.


P01BasicsApplication

package com.web;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/*
 * # @SpringBootApplication
 * - SpringBoot Apllication을 시작하는데 필요한 구성을 자동으로 수행
 */
// 이 하위에 있는 모든 빈들을 생성처리 해 줌
// 어플리케이션에 필요한 구성을 자동으로 처리 해 줌
// 기본 패키지에 붙어 있음
// main method 도 들어 있음
@SpringBootApplication
public class P01BasicsApplication {
	public static void main(String[] args) {
//		SpringApplication.run(P01BasicsApplication.class, args);
		
		// 자바 application 으로 실행 
		SpringApplication application = new SpringApplication(P01BasicsApplication.class);
		application.setWebApplicationType(WebApplicationType.NONE);
		application.run(args);
		
	}
	
}

application.properties

# 앱 설정 파일

# WebApllication Type Setting : 스프링 MVC 기반으로 웹 애플리케이션 구동 
spring.main.web-application-type=servlet

# 톰켓 서버 포트 변경
server.port=8080



P02_begin




< memo.txt >

# @RestController 사용
- RESTful 웹 서비스를 제공하는 컨트롤러 클래스를 정의할 때 사용됩니다
  이 애너테이션을 사용하면 해당 컨트롤러가 HTTP 요청에 응답하고,
  JSON 또는 XML 형식의 데이터를 반환할 수 있습니다
- JSP 같은 뷰(View)를 별도로 만들지 않는 대신에 컨트롤러 메서드가 리턴한
  데이터 자체를 클라이언트로 전달합니다
- 클라이언트에 전달되는 데이터는 대부분 문자열, VO 이거나 컬렉션 형태의 자바 객체 인데
  자바 객체가 전달되는 경우 자동으로 JSON 으로 변환하여 처리합니다   


# Spring Boot Starters 추가
- 프로젝트명 마우스 우측 클릭 -> Spring -> Add Starters 


# Spring Boot Devtools
- 컨트롤러에 새로운 메서드가 추가되면 반드시 실행 중인 애플리케이션을 중지하고 애플리케이션을
  재실행해야 합니다. 이때 컨트롤러를 수정할 때 마다 매번 애플리케이션을 재실행하는 것이
  귀찮으면 스프링 부트가 제공하는 DevTools 기능을 이용합니다
  
  
# Lombok 라이브러리 사용
- 롬복을 사용하면 자바 파일을 컴파일 할 때 자동으로 생성자, getter, setter, toString 등의
  코드들을 자동으로 추가해줌
- Spring Boot Starters 추가

- 롬복 라이브러리는 의존성 추가만으로 사용할 수 없다
- 롬복을 사용하려면 별도로 이클립스 설치 폴더에 롬복 라이브러리를 추가해야 한다.

- 프로젝트 우클릭 - Spring - add starter - devel tool 에 있음
- lombok 스타터 추가 후 이클립스 종료
-> https://projectlombok.org/ 
-> 상단 Download
-> lombok.jar 다운로드

- cmd 롬복 다운로드한 폴더로 이동 (관리자 권한
-> java -jar lombok.jar 명령어 실행
-> Specify location... 
-> 이클립스exe 경로 찾기

- exe 파일 체크 -> 진행 -> 이클립스 실행 폴더내에 lombok.jar 추가 돼 있음

------------------------------------------------------------
- lombok 제공 @
> @~~							기능
  @Getter, @Setter				getter, setter 메소드를 만들어 줌
  @ToString						모든 멤버 변수의 값을 문자열로 열결하여 리턴하는 toString() 만들어줌
  @RequiredArgsConstructor 		모든 멤버 변수를 초기화하는 생성자를 만들어 줌
  @EqualsAndHashCode			equals(), hashCode() 메서드를 만드어 줌
  @Data							위 모든 항목을 포함

P02BeginApplication

package com.web;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//@ComponentScan(basePackages = {"com.web", "com.test"}) // 생성할 빈 package 이름 basePackages 값에 넣어주면 됨
public class P02BeginApplication {

	public static void main(String[] args) {
		SpringApplication.run(P02BeginApplication.class, args);
	}

}

BoardController

package com.web.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/*
 * # @RestController
 * - RESTful 웹 서비스를 제공하는 컨트롤러 클래스를 정의할 때 사용됩니다
 *    @RestController 을 사용하면 해당 컨트롤러가 HTTP 요청에 응답하고,
 *    JSON 또는 XML 형식의 데이터를 반환할 수 있다
 * - JSP 같은 뷰(View)를 별도로 만들지 않는 대신에 컨트롤러 메서드가 리턴한 
 *   데이터 자체를 클라이언트로 전달
 * - 클라이언트에 전달되는 데이터는 대부분 String, VO, Collection 형태의 자바 객체인데
 *   자바 객체가 전달되는 경우 자동으로 JSON 으로 변환하여 처리  
 */

import com.web.vo.BoardVO;

@RestController
public class BoardController {
	public BoardController() {
		System.out.println("- BoardController -");
	}
//	@GetMapping("/hello")
//	public String hello() {
//		return "boot_start";
//	}
	@GetMapping("/hello")
	public String hello(String data) {
		return "data - "+ data;
	}
	
	// VO 객체 반환
	@GetMapping("/getBoard")
	public BoardVO getBoard(){
		BoardVO vo = new BoardVO();
		vo.setSeq(1);
		vo.setTitle("vo test");
		vo.setWriter("테스트");
		vo.setContent("sadasfasdgafs");
		vo.setCreateDate(new Date());
		vo.setCnt(0);
		return vo;
	}
	
	// Collection 반환
	@GetMapping("/getList")
	public List<BoardVO> getList(){
		List<BoardVO> list = new ArrayList<>();
		for(int i=0; i<2;i++) {
			BoardVO vo = new BoardVO();
			vo.setSeq(i);
			vo.setTitle("vo test : " + i);
			vo.setWriter("테스트 : " + i);
			vo.setContent(i + " 번 내용입니다.");
			vo.setCreateDate(new Date());
			vo.setCnt(i*2);
			list.add(vo);
		}
		return list;
	} 
	
}

BoardVO

package com.web.vo;

import java.util.Date;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class BoardVO {
	private int seq;
	private String title;
	private String writer;
	private String content;
	private Date createDate = new Date();
	private int cnt;
}


starter 추가

  • 프로젝트 우클릭 - Spring - add starter - Spring Boot DevTools

  • DevTools 가 적용된 프로젝트는 프로젝트명 우측에 DevTools가 적혀 있음

Spring Boot DevTools

  • 컨트롤러에 새로운 메서드가 추가되면 반드시 실행 중인 애플리케이션을 중지하고,
    애플리케이션을 재실행 한다.
  • 이떄 컨트롤러를 수정할 때 마다 매번 애플리케이션을 재실행 하는 것이 귀찮으며 스프링 부트가 제공하는 Spring Boot DevTools 기능을 이용

profile
Fintech

0개의 댓글