카테고리 없음

#105. Spring Boot

열하나요 2023. 12. 5. 10:04

Spring Start Project

 

 

boot 3.0이 나오면서 자바8, 11이 지원이 안됨

일단 17버전으로 만들고 다운그레이딩해줄거임

 

 

버전은 상관없음 어짜피 바꿀거임

 

pom.xml

버전에 맞게 바꿔줌

 

이 프로젝트는 webapp이 통째로 없음 => xxx-context.xml, root-context.xml, view등이 없음

=> 1. 세팅할 수 없음 => boot는 알아서 다해줌 

=> 2. jsp를 넣을 수 없음 => boot는 jsp사용을 권장하지 않음

또한

boot는 서버에 프로젝트를 올리지 않음 => 내장 tomcat을 가지고 있음

=> Boot Dachboard

 

src > main > resources > static에

index.html을 만든다. => 이게 웰컴파일

: 공식문서에 다 적혀있음

 

src > main > resources > application에는 모든 환경설정을 다적음

server.port=9001 => 포트번호 기본8080인데 바꿔주고

 

java > com > kh > boot에 spring자바 파일이 있음

빨간줄 => 프로젝트 메이픈 업데이트

 

 

application에 환경설정을 더 적어보자

server.port=9001

server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=SPRING
spring.datasource.password=SPRING
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe

 

내가 적은 파란색은 문자열데이터라 오타나도 안알려줌

앞에적은 건 오타나면 노란색으로 알려줌ㅎ

 

 

-----------------------------------------------------------------

Idol 게시판을 또 만들어보자

 

DAO가 하는일이 한줄밖에 없음

@Mapper로 interface로 만들어 추상화 시켜줌

=> SqlSessionTemplate 안 넘겨도 됨

@Mapper
public interface IdolMapper {
	List<Idol> selectAll();
}

그리고 mapper에는 namespace의 값을 Mapper의 경로부터 인터페이스명까지 적어줘야 함

 

id명은 Mapper에 적어놓은 메소드명과 똑같이 적으면 됨

<mapper namespace="com.kh.boot.idol.model.dao.IdolMapper">

	<select id="selectAll" resultType="Idol">
		SELECT
			   ID,
			   NAME,
			   MEMBER,
			   SONG,
			   IMAGE,
			   DESCRIPTION
		  FROM
		  	   IDOL
		 ORDER
		    BY
		       ID
	</select>

resultType은 config가 없으니까 원래 경로에 클래스명까지 다 적어야되는데 application파일에

설정을 적어주면 클래스명만 적어도 됨

mybatis.type-aliases-package=com.kh.boot.idol.model.vo
mybatis.mapper-location:classpath:mapper/*.xml

밑에껀 mapper아래 있는 모든 xml파일은 mapper로 쓰겠다는 것

 

controller

@RestController // 비동기 요청만 받을거임 (JSON타입만 돌려줄거임)
@CrossOrigin("*") // 다른 포트에서 오는 요청을 받겠음
@RequestMapping("/idol")
@RequiredArgsConstructor
public class IdolController {
	
	private IdolService idolService;
	
	@GetMapping
	public ResponseEntity<List<Idol>> selectAll(){
		List<Idol> idolList = idolService.selectAll();
		HttpHeaders header = new HttpHeaders();
		header.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
		return new ResponseEntity<List<Idol>>(idolList, header, HttpStatus.OK);
	}

이렇게 해주면 idol로 매핑들어오면 이 클래스로 돌아오고 

Get/Post 매핑값에 따라 다른 메소드를 실행함

 

그러면 Rest방식에 더 적합하게 됨