Spring Boot - 1

현곤·2024년 12월 10일

주석

이런 어노테이션을 많이 사용하게 되는데 이것들은 컴퓨터의 주석이라고 보면 된다.

사람이 쓰는 주석은 // 이지만, 컴퓨터의 주석은 이노테이션(Annotation) 이다.

// 사용하는 어노테이션

@Controller
@GetMapping
@Service
@Autowired
@Controller
public class Maincontroller { }

이런 식으로 사용하면 스프링 부트가 컨트롤러로 사용을 한다.

// @Controller 어노테이션을 붙여주면 스프링부트가 이 클래스를 컨트롤러로 인식하게 된다.
@Controller
public class Maincontroller {

// @GetMapping("/") 어노테이션을 붙여주면 이 메소드는 "/" 경로로 들어왔을 때 실행된다.
    @GetMapping("/")
    
    // @ResponseBody 어노테이션을 붙여주면 리턴값이 뷰 파일명이 아니라 응답 바디에 들어가게 된다.
    @ResponseBody
    public String showMain() {
        return "안녕하세요.";
    }
}

리스폰스 바디를 붙이게 되면, 이 메서드의 응답값이 우리한테 보여진다.

정리 )
@Controller << 클래스에 붙이는 거
@GetMapping << 메소드에 붙이는 거, URL(/)과 함수를 연결해주는 매핑 정보
@ResponseBody << 함수의 리턴 값이 8080 홈페이지에 나오게 한다.


뻔한 일은 프레임 워크가 알아서 해준다.

if (scanner.equals("/")) {
    c.showMain();
}

else if (scanner.equals("/about")) {
    c.showAbout();    
}

원래 자바에선 이렇게 입력을 하나 하나 적었지만,

스프링 부트에서는 알아서 해준다.

@Controller
public class Maincontroller {
    @GetMapping("/")
    @ResponseBody
    public String showMain() {
        return "안녕하세요.";
    }

    @GetMapping("/about")
    @ResponseBody
    public String about() {
        System.out.println("about");
        return "저는 홍길동입니다.";
    }


객체는 1번만 만들어진다

@Controller
public class Homecontroller {
    private int age = 26;
    private String a = "현곤의 나이 : ";

    
    @GetMapping("/ageUp")
    @ResponseBody
    public String showAge() {
        return a + age++;
    }
}

									(생성이 됨)
                                    
                                    

						(새로고침을 하면 ++ 때문에 수가 올라감)
                        
                        

객체 리턴

@GetMapping("/Gon")
@ResponseBody
public Gon getGon() {
	return new gon();
}

class Gon {

}

빈 객체를 json화를 하면 실패라고 나온다.

그래서 하나라도 넣어줘야만 작동을 한다.

@GetMapping("/Gon")
@ResponseBody
public Gon getGon() {
	return new gon(26);
}

// @AllArgsConstructor : 모든 필드를 기반으로 한 생성자를 만든다.
@AllArgsConstructor
class Gon {
	private int age; 
}

근데 이렇게 해도 오류가 난다 왜 나는가?

private << 때문에 접근을 못해서다.

따라서 public 으로 만들어주는 방법이 있고 Get (창구)을 만들어주는 방법이 있다.

@GetMapping("/Gon")
    @ResponseBody
    public Gon getGon() {
        return new Gon(26, "현", "곤");
}

@AllArgsConstructor
class Gon {
    public int age;
    public String middle;
    public String last;
}
profile
코딩하는 곤쪽이

0개의 댓글