[TIL]航海9917日目
2週目から主な特長を深める.
空(bean):スプリングによって管理されるオブジェクト スプリングIoC容器:「空」を集めたバケツ
クラスに@Componentを設定 public class ProductServcie → productServcie @Bean
ダイレクトオブジェクトを作成し、空の登録を要求する スプリングサーバが起動すると、スプリングIoCに「空」 が保存される.スプリング「空」名:@beanが設定された関数名
@Autowiredメンバー変数宣言の上@Autowired 「空」を使用する関数で@Autowired
MVC(Model - View - Controller)
@Controller
@RequestMapping("/hello/response")
public class HelloResponseController {
@GetMapping("/html/redirect")
public String htmlFile() {
return "redirect:/hello.html";
}
@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}
@GetMapping("/body/html")
@ResponseBody
public String helloStringHTML() {
return "<!DOCTYPE html>" +
"<html>" +
"<head><meta charset=\"UTF-8\"><title>By @ResponseBody</title></head>" +
"<body> Hello, 정적 웹 페이지!!</body>" +
"</html>";
}
@GetMapping("/html/dynamic")
public String helloHtmlFile(Model model) {
visitCount++;
model.addAttribute("visits", visitCount);
// resources/templates/hello-visit.html
return "hello-visit";
}
private static long visitCount = 0;
@GetMapping("/json/string")
@ResponseBody
public String helloStringJson() {
return "{\"name\":\"BTS\",\"age\":28}";
}
@GetMapping("/json/class")
@ResponseBody
public Star helloJson() {
return new Star("BTS", 28);
}}
IoC容器
空の登録方法
クラスに@Componentを設定
@Component
public class ProductService { ... }
@Componentの役割// 1. ProductService 객체 생성
ProductService productService = new ProductService();
// 2. 스프링 IoC 컨테이너에 빈 (productService) 저장
// productService -> 스프링 IoC 컨테이너
スプリングの空の名前:クラスの先頭文字のみを小文字に変更ダイレクトオブジェクト
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfiguration {
@Bean
public ProductRepository productRepository() {
String dbUrl = "jdbc:h2:mem:springcoredb";
String dbId = "sa";
String dbPassword = "";
return new ProductRepository(dbUrl, dbId, dbPassword);
}
}
// 1. @Bean 설정된 함수 호출
ProductRepository productRepository = beanConfiguration.productRepository();
// 2. 스프링 IoC 컨테이너에 빈 (productRepository) 저장
// productRepository -> 스프링 IoC 컨테이너
public ProductRepository productRepository() {..} → productRepostory
スプリングの空の使用方法
@Autowired
@Component
public class ProductService {
@Autowired
private ProductRepository productRepository;
}
@Component
public class ProductService {
private final ProductRepository productRepository;
@Autowired
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
// ...
}
Reference
この問題について([TIL]航海9917日目), 我々は、より多くの情報をここで見つけました https://velog.io/@woojinshim103/TIL-항해99-17일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol