드디어 spring 학습 1일차!
두근두근한 마음으로 시작!
build.gradle
=== React의 package.json
bean
은 Spring 내부에서 관리하는 static 영역IoC(Spring bean) container
: bean들을 모아놓은 곳// e.g. bean 선언 예시
public class DemoApplication {
@Bean
public String test2(){
return "asdf";
}
@Bean
public Student student(){
return new Student();
}
...
}
component
는 bean
과 같은 일반적인 객체가 아닌 클래스 자체를 외부에서 쓰고자 할 때 사용@Autowired
어노테이션을 활용하는 방식IoC Container
를 넘겨주기 때문에 별도의 @Autowired
사용 없이 가져다가 사용할 수 있다. @Controller
public class TestController {
// @Autowired를 활용한 IoC 접근 방식
@Autowired
String test;
@Autowired
Student student;
@Autowired
Data data;
// 생성자를 활용한 IoC 접근방식
public TestController(String test, Student student, Data data){
this.test = test;
this.student = student;
this.data = data;
}
}
@Controller
: url 매핑 및 처리로직 메서드 필드를 가지는 클래스에 선언@RequestMapping
: url 매핑 메서드에 선언@Bean
: 타 클래스에서 쓰일 데이터에 선언(함수 형태)@Autowired
: Bean에서 쓰고 싶은 데이터를 꺼낼 때 선언@RequestParam
: request body 접근시 사용@RequestMapping
을 활용해 url 정보와 사용자 접근 메서드 정보를 넘긴다.template/
하위에 존재하는 html 파일을 연결해 렌더링한다.@Controller
public class TestController {
...
@RequestMapping(value = "/java", method = RequestMethod.GET)
public String java(){
return "java";
}
@RequestMapping(value="/test", method = RequestMethod.GET)
public String test(){
return "test";
}
}
String name
, int age
속성을 가지는 Student 객체 추가 예제
1. HttpServeletRequest.getParameter()
활용
// ./TestController.java
@Controller
public class TestController {
...
@RequestMapping(value="/", method=RequestMethod.POST)
public String postStudent(HttpServletRequest request){
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
Student student = new Student(name, age);
data.list.add(student);
return "redirect:/"; // '/'으로 리다이렉트
}
}
2.@RequestParam
활용(추상화)
@Controller
public class TestController {
...
@RequestMapping(value="/", method=RequestMethod.POST)
public String postStudent(HttpServletRequest request, @RequestParam String name, @RequestParam Integer age){
Student student = new Student(name, age);
data.list.add(student);
return "redirect:/";
}
}