본문 바로가기

spring boot

spring boot 기초 (java, spring 기초 포함)

 

@Slf4j
@SpringBootApplication
public class MainController {
	public static void main(String[] args) {
    	Test test = new Test(); // 아래 선언한 Test라는 클래스를 가져와 쓸 수 있는 인스턴스 생성
        
        log.info(test.hello); // TaeHoon
    }
}

class Test {
	String name = "kim";
    public void hello() {
    	log.info("TaeHoon");
    }
}

 

클래스는 서로 관련이 있는 필드나 메소드를 담고 있는 통이다.

 

클래스는 오브젝트 타입이기 때문에 데이터 타입이 될 수 있다.

 

클래스를 생성해 사용하면 원본 클래스 내부의 필드와 메소드는 원본을 유지할 수 있다.

 

 

서버

 

서버란 요청이 들어오면 그 요청에 대한 응답을 요청자에게 전달하는 프로그램을 말한다.

 

 

@Controller // 서버의 역할을 해주는 어노테이션 (요청과 응답의 통로로 이용된다.)
public class BasicController {
    @GetMapping("/") // "" 안의 url 주소로 GET 요청을 보내는 어노테이션
    @ResponseBody // return 타입이 String일 때, return 값을 데이터가 아닌 문자열로 전달한다.
    public String hello() {

        return "안녕하세요";
    }
}

 

위의 코드를 실행한 후, 본인 포트로 접속하면 return 값이 나오는 것을 볼 수 있다.

 

@Controller

 

서버 기능을 만들어 주는 어노테이션

요청과 응답의 통로

(API의 생성을 하게 해주는 어노테이션)

 

 

@ResponseBody

 

해당 어노테이션 사용 시, 데이터가 아닌 문자열로 전송

 

 

@Controller가 붙은 클래스 내부의 코드 덩어리들은 하나하나가 서버의 기능을 의미하며 곧 API라고 말할 수 있다.

 

 

라이브러리 관리 (gradle 기준)

build.gradle

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

 

dependencies 안에 원하는 라이브러리를 추가하고

Load Gradle Change 실행하면 다운로드 받을 수 있다.

 

백단에서의 추가 및 수정 삭제는 항상 작업이 끝난 후, 서버를 리로드 해야 적용된다.

 

 

HTML 폴더

 

spring boot 기준, resources 폴더 안에는static, templates 폴더가 존재한다.

 

static 폴더는 정적인 htmltemplates 폴더는 동적이며 바인딩이 가능한 html

 

 

Model

 

@Controller
public class ItemController {

    @GetMapping("/list")
    public String list(Model model) {
        model.addAttribute("response", "자켓");

        return "list.html";
    }
}

 

 

model.addAttribute("dataName", "value");

 

전달하고자 하는 데이터를 모델에 데이터네임으로 담아 뷰단으로 전달할 수 있다.