{"id":981,"date":"2022-09-24T04:55:50","date_gmt":"2022-11-11T20:35:46","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/"},"modified":"2025-08-01T04:01:37","modified_gmt":"2025-07-31T19:01:37","slug":"%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","title":{"rendered":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54"},"content":{"rendered":"<p>\u6700\u8fd1\u3001\u79c1\u306f\u305f\u304f\u3055\u3093\u306eSpring\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u6295\u7a3f\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u8a18\u4e8b\u306f\u3001Spring\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u3067\u306e\u8cea\u554f\u306b\u8a73\u3057\u304f\u8aac\u660e\u3092\u52a0\u3048\u3001\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>Spring Framework\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306e\u6700\u3082\u4eba\u6c17\u306e\u3042\u308bJava EE\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e1\u3064\u3067\u3059\u3002\u4f9d\u5b58\u6027\u306e\u6ce8\u5165\u3068\u9762\u5411\u3051\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306f\u3001Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u8981\u70b9\u3067\u3059\u3002\u3082\u3057Spring Framework\u306b\u3088\u304f\u7cbe\u901a\u3057\u3066\u3044\u308b\u306a\u3089\u3001Java\u306e\u9762\u63a5\u3067\u9078\u3070\u308c\u308b\u53ef\u80fd\u6027\u306f\u975e\u5e38\u306b\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u30d7\u30ed\u306e\u30d2\u30f3\u30c8\uff1aCore Java\u306f\u3001\u3069\u3093\u306aJava\u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u57fa\u76e4\u3068\u306a\u308b\u305f\u3081\u3001\u9762\u63a5\u306e\u6e96\u5099\u3092\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Core Java\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068Java\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u306e\u8a18\u4e8b\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2>\u6625\u306e\u9762\u63a5\u306e\u8cea\u554f\u3068\u56de\u7b54<\/h2>\n<p>\u3053\u3053\u3067\u306f\u3001\u307b\u307c50\u306e\u6625\u306e\u9762\u63a5\u8cea\u554f\u3068\u305d\u306e\u56de\u7b54\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002Spring 5\u307e\u3067\u6700\u65b0\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u305f\u3081\u3001Spring WebFlux\u306a\u3069\u306e\u6700\u65b0\u6a5f\u80fd\u3082\u30ab\u30d0\u30fc\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>1. Spring Framework\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u306f\u3001Java EE\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e2d\u3067\u3082\u6700\u3082\u5e83\u304f\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u306e\u4e00\u3064\u3067\u3059\u3002\u30b9\u30d7\u30ea\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u306f\u3001\u300c\u4f9d\u5b58\u6027\u6ce8\u5165\u300d\u3068\u300c\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u300d\u3067\u3059\u3002<\/p>\n<p>Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u901a\u3058\u3066\u3001\u901a\u5e38\u306eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3082\u7570\u306a\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u9593\u306e\u7de9\u3044\u7d50\u5408\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u4f9d\u5b58\u6027\u6ce8\u5165\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Spring\u306e\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ed\u30b0\u8a18\u9332\u3084\u8a8d\u8a3c\u306a\u3069\u306e\u30af\u30ed\u30b9\u30ab\u30c3\u30c6\u30a3\u30f3\u30b0\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u79c1\u306f\u6625\u304c\u597d\u304d\u3067\u3059\u3002\u306a\u305c\u306a\u3089\u3001Spring MVC\u3084Spring JDBC\u306a\u3069\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u306b\u9069\u3057\u305f\u591a\u304f\u306e\u6a5f\u80fd\u3084\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u306e\u30ea\u30bd\u30fc\u30b9\u3082\u8c4a\u5bcc\u3067\u3001\u6d3b\u767a\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u3082\u3044\u307e\u3059\u306e\u3067\u3001Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u4e00\u7dd2\u306b\u4f5c\u696d\u3059\u308b\u3053\u3068\u306f\u7c21\u5358\u3067\u697d\u3057\u3044\u3067\u3059\u3002<\/p>\n<p>\u304a\u3059\u3059\u3081\u306e\u8aad\u307f\u7269\uff1aSpring Framework<\/p>\n<h3>2. Spring Framework\u306e\u91cd\u8981\u306a\u7279\u5fb4\u306f\u4f55\u3067\u3059\u304b\uff1f (Spring Framework no juuyou na tokucho wa nan desu ka?)<\/h3>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u30012\u3064\u306e\u30c7\u30b6\u30a4\u30f3\u30b3\u30f3\u30bb\u30d7\u30c8\u3001\u4f9d\u5b58\u6027\u306e\u6ce8\u5165\u3068\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u57fa\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u7279\u5fb4\u306b\u306f\u3001\u4ee5\u4e0b\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>Lightweight and very little overhead of using a framework for our development.<\/li>\n<li>Dependency Injection or Inversion of Control to write components that are independent of each other, spring container takes care of wiring them together to achieve our work.<\/li>\n<li>Spring IoC container manages Spring Bean life cycle and project-specific configurations such as JNDI lookup.<\/li>\n<li>Spring MVC framework can be used to create web applications as well as restful web services capable of returning XML as well as JSON response.<\/li>\n<li>Support for transaction management, JDBC operations, File uploading, Exception Handling, etc with very few configurations, either by using annotations or by spring bean configuration file.<\/li>\n<\/ul>\n<h3>3. Spring Framework\u306e\u5229\u70b9\u306f\u4f55\u3067\u3059\u304b\uff1f (Spring Framework\u306e\u308a\u3066\u3093\u306f\u306a\u3093\u3067\u3059\u304b\uff1f)<\/h3>\n<p>Spring Framework\u306e\u5229\u70b9\u306e\u4e00\u90e8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>Reducing direct dependencies between different components of the application. Spring IoC container is responsible for initializing resources or beans and inject them as dependencies.<\/li>\n<li>Writing unit test cases are easy in the Spring framework because our business logic doesn\u2019t have direct dependencies with actual resource implementation classes. We can easily write a test configuration and inject our mock beans for testing purposes.<\/li>\n<li>Reduces the amount of boiler-plate code, such as initializing objects, open\/close resources. I like JdbcTemplate class a lot because it helps us in removing all the boiler-plate code that comes with JDBC programming.<\/li>\n<li>Spring framework is divided into several modules, it helps us in keeping our application lightweight. For example, if we don\u2019t need Spring transaction management features, we don\u2019t need to add that dependency to our project.<\/li>\n<li>Spring framework supports most of the Java EE features and even much more. It\u2019s always on top of the new technologies, for example, there is a Spring project for Android to help us write better code for native Android applications. This makes the spring framework a complete package and we don\u2019t need to look after the different frameworks for different requirements.<\/li>\n<\/ul>\n<h3>Spring 5\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring 5\u306fSpring 4\u304b\u3089\u306e\u5927\u898f\u6a21\u306a\u6539\u4fee\u3067\u3059\u3002\u91cd\u8981\u306a\u6a5f\u80fd\u306e\u3044\u304f\u3064\u304b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Support for Java 8 and higher versions, so we can use lambda expressions.<\/li>\n<li>Support for Java EE7 and Servlet 4.0 specs.<\/li>\n<li>File operations are performed via NIO 2 streams now, a huge improvement if your app does a lot of file handling.<\/li>\n<li>Introduction of spring-jcl to streamline logging, earlier it was a mess due to no single point for logging purposes.<\/li>\n<li>Support for Kotlin, Lombok, Reactor 3.1 Flux, and Mono as well as RxJava.<\/li>\n<li>Spring WebFlux that brings reactive programming to Spring.<\/li>\n<li>Support for JUnit 5<\/li>\n<li>Support for providing spring components information through index file \u201cMETA-INF\/spring.components\u201d rather than classpath scanning.<\/li>\n<\/ul>\n<p>\u3053\u306e\u30ea\u30ea\u30fc\u30b9\u306e\u8a73\u7d30\u306a\u6982\u8981\u3092\u628a\u63e1\u3059\u308b\u305f\u3081\u306b\u3001Spring 5\u306e\u7279\u5fb4\u306b\u3064\u3044\u3066\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>5. Spring WebFlux\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f (Spring WebFlux to wa nan desu ka?)<\/h3>\n<p>Spring WebFlux\u306f\u3001Spring 5\u3067\u5c0e\u5165\u3055\u308c\u305f\u65b0\u3057\u3044\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002Spring WebFlux\u306f\u3001Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306e\u53cd\u5fdc\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30e2\u30c7\u30eb\u3078\u306e\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002<\/p>\n<p>Spring WebFlux\u306f\u3001Spring MVC\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4ee3\u66ff\u3068\u306a\u308b\u3082\u306e\u3067\u3059\u3002Spring WebFlux\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u30eb\u30fc\u30d7\u306e\u5b9f\u884c\u30e2\u30c7\u30eb\u306b\u57fa\u3065\u3044\u3066\u69cb\u7bc9\u3055\u308c\u305f\u5b8c\u5168\u975e\u540c\u671f\u304b\u3064\u975e\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u300cSpring WebFlux \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3067\u306f\u3001\u305d\u308c\u306b\u95a2\u3057\u3066\u3082\u3063\u3068\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u300d<\/p>\n<h3>6. \u4f9d\u5b58\u6027\u6ce8\u5165\u3068\u306f\u3069\u306e\u3088\u3046\u306b\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u4f9d\u5b58\u6027\u6ce8\u5165\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306b\u3088\u308a\u3001\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u3092\u9664\u53bb\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u758e\u7d50\u5408\u3001\u62e1\u5f35\u53ef\u80fd\u3001\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f9d\u5b58\u6027\u306e\u89e3\u6c7a\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u304b\u3089\u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u79fb\u52d5\u3059\u308b\u305f\u3081\u3001\u4f9d\u5b58\u6027\u6ce8\u5165\u30d1\u30bf\u30fc\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u4f9d\u5b58\u6027\u6ce8\u5165\u306e\u5229\u70b9\u306e\u4e00\u90e8\u3068\u3057\u3066\u3001\u95a2\u5fc3\u306e\u5206\u96e2\u3001\u7169\u96d1\u306a\u30b3\u30fc\u30c9\u306e\u524a\u6e1b\u3001\u8a2d\u5b9a\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3001\u305d\u3057\u3066\u7c21\u5358\u306a\u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002<\/p>\n<p>\u300c\u4f9d\u5b58\u6027\u6ce8\u5165\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u300d\u3092\u8aad\u3093\u3067\u8a73\u3057\u304f\u8abf\u3079\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f9d\u5b58\u6027\u6ce8\u5165\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u5316\u3059\u308b\u305f\u3081\u306b\u3001Google Guice\u3082\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u822c\u7684\u306b\u306f\u4f9d\u5b58\u6027\u6ce8\u5165\u4ee5\u4e0a\u306e\u6a5f\u80fd\u3092\u6c42\u3081\u308b\u5834\u5408\u304c\u591a\u304f\u3001\u305d\u306e\u70b9\u3067Spring\u304c\u6700\u9069\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<h3>7. \u30b9\u30d7\u30ea\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067DI\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001\u3069\u306e\u3088\u3046\u306b\u3059\u308c\u3070\u826f\u3044\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u79c1\u305f\u3061\u306f\u3001Spring\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067DI\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u3001Spring XML\u30d9\u30fc\u30b9\u3068\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u306e\u4e21\u65b9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3088\u308a\u6df1\u3044\u7406\u89e3\u306e\u305f\u3081\u306b\u3001Spring\u306eDependency Injection\u306e\u4f8b\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u305d\u3053\u3067JUnit\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3068\u3068\u3082\u306b\u4e21\u65b9\u306e\u65b9\u6cd5\u3092\u5b66\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u6295\u7a3f\u306b\u306f\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eZIP\u30d5\u30a1\u30a4\u30eb\u3082\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u3055\u3089\u306b\u5b66\u3076\u305f\u3081\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u8a66\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>8. Spring Tool Suite\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Eclipse\u306b\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3067\u3001Spring Tool Suite\u306e\u3059\u3079\u3066\u306e\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001STS\u306b\u306fMaven\u30b5\u30dd\u30fc\u30c8\u3084\u7570\u306a\u308b\u7a2e\u985e\u306eSpring\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001Spring\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306etc server\u306a\u3069\u3001\u91cd\u8981\u306a\u6a5f\u80fd\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u79c1\u306fSTS\u304c\u597d\u304d\u3067\u3059\u3002\u306a\u305c\u306a\u3089\u3001STS\u306fSpring\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u5f37\u8abf\u3057\u3066\u8868\u793a\u3057\u3066\u304f\u308c\u308b\u304b\u3089\u3067\u3059\u3002\u3082\u3057AOP\u306e\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u3068\u30a2\u30c9\u30d0\u30a4\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u7279\u5b9a\u306e\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u306e\u4e0b\u306b\u5165\u308b\u306e\u304b\u660e\u78ba\u306b\u793a\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u3060\u304b\u3089\u3001\u81ea\u5206\u3067\u3059\u3079\u3066\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3088\u308a\u3082\u3001\u79c1\u306fSpring\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u969b\u306bSTS\u3092\u4f7f\u3046\u3053\u3068\u3092\u597d\u307f\u307e\u3059\u3002<\/p>\n<h3>9. \u91cd\u8981\u306aSpring\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e2d\u3067\u540d\u524d\u3092\u6319\u3052\u3066\u304f\u3060\u3055\u3044\u3002<\/h3>\n<p>\u91cd\u8981\u306aSpring Framework\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u3046\u3061\u3044\u304f\u3064\u304b\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spring Context \u2013 for dependency injection.<\/li>\n<li>Spring AOP \u2013 for aspect-oriented programming.<\/li>\n<li>Spring DAO \u2013 for database operations using DAO pattern<\/li>\n<li>Spring JDBC \u2013 for JDBC and DataSource support.<\/li>\n<li>Spring ORM \u2013 for ORM tools support such as Hibernate<\/li>\n<li>Spring Web Module \u2013 for creating web applications.<\/li>\n<li>Spring MVC \u2013 Model-View-Controller implementation for creating web applications, web services, etc.<\/li>\n<\/ul>\n<h3>10. \u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f (Asupekuto shik\u014d puroguramingu to wa nan desu ka?)<\/h3>\n<p>\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3001\u30ed\u30b0\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3001\u8a8d\u8a3c\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u9069\u7528\u53ef\u80fd\u306a\u5171\u901a\u306e\u30af\u30ed\u30b9\u30ab\u30c3\u30c8\u306e\u95a2\u5fc3\u4e8b\u304c\u3042\u308a\u307e\u3059\u3002 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u306f\u30af\u30e9\u30b9\u306b\u3088\u3063\u3066\u9054\u6210\u3055\u308c\u307e\u3059\u3002 \u4e00\u65b9\u3001AOP\u3067\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u3092\u30a2\u30b9\u30da\u30af\u30c8\u306b\u3088\u3063\u3066\u9054\u6210\u3057\u3001\u7570\u306a\u308b\u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u306b\u307e\u305f\u304c\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>AOP\u306f\u901a\u5e38\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u306f\u4e0d\u53ef\u80fd\u306a\u3001\u6a2a\u65ad\u7684\u306a\u30bf\u30b9\u30af\u3078\u306e\u76f4\u63a5\u306e\u4f9d\u5b58\u6027\u3092\u30af\u30e9\u30b9\u304b\u3089\u53d6\u308a\u9664\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30ed\u30b0\u8a18\u9332\u306e\u305f\u3081\u306b\u5225\u306e\u30af\u30e9\u30b9\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u4ed6\u306e\u30af\u30e9\u30b9\u306f\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3055\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001AOP\u3067\u306f\u30a2\u30b9\u30da\u30af\u30c8\u3092\u8a2d\u5b9a\u3057\u3001\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u884c\u304c\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u307e\u3059\u3002Spring AOP\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3001Spring AOP\u306e\u4f8b\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>11. AOP\u306b\u304a\u3051\u308bAspect\u3001Advice\u3001Pointcut\u3001JointPoint\u3001Advice Arguments\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30a2\u30b9\u30da\u30af\u30c8: \u30a2\u30b9\u30da\u30af\u30c8\u306f\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u306a\u3069\u306e\u30af\u30ed\u30b9\u30ab\u30c3\u30c8\u61f8\u5ff5\u4e8b\u9805\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u30af\u30e9\u30b9\u3067\u3059\u3002\u30a2\u30b9\u30da\u30af\u30c8\u306f\u3001\u901a\u5e38\u306e\u30af\u30e9\u30b9\u3068\u3057\u3066\u69cb\u6210\u3055\u308c\u3001Spring Bean\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u69cb\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001@Aspect\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30af\u30e9\u30b9\u3092\u30a2\u30b9\u30da\u30af\u30c8\u3068\u3057\u3066\u5ba3\u8a00\u3059\u308b\u305f\u3081\u306bSpring AspectJ\u30b5\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30a2\u30c9\u30d0\u30a4\u30b9\uff1a\u30a2\u30c9\u30d0\u30a4\u30b9\u306f\u7279\u5b9a\u306e\u30b8\u30e7\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u884c\u308f\u308c\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u89b3\u70b9\u304b\u3089\u898b\u308b\u3068\u3001\u305d\u308c\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u7279\u5b9a\u306e\u30b8\u30e7\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8\u306b\u5230\u9054\u3057\u305f\u6642\u306b\u5b9f\u884c\u3055\u308c\u308b\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002\u30a2\u30c9\u30d0\u30a4\u30b9\u306f\u3001Spring\u306e\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u3084Servlet\u30d5\u30a3\u30eb\u30bf\u30fc\u3068\u540c\u69d8\u306b\u8003\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\uff1a\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u306f\u3001\u30a2\u30c9\u30d0\u30a4\u30b9\u304c\u5b9f\u884c\u3055\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30b8\u30e7\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8\u3068\u4e00\u81f4\u3055\u305b\u308b\u6b63\u898f\u8868\u73fe\u3067\u3059\u3002\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u306f\u3001\u30b8\u30e7\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8\u3068\u4e00\u81f4\u3059\u308b\u7570\u306a\u308b\u7a2e\u985e\u306e\u5f0f\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30a2\u30c9\u30d0\u30a4\u30b9\u30e1\u30bd\u30c3\u30c9\u304c\u9069\u7528\u3055\u308c\u308b\u30b8\u30e7\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001AspectJ\u306e\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u5f0f\u8a00\u8a9e\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>JoinPoint\uff08\u63a5\u5408\u70b9\uff09\u3068\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u7279\u5b9a\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u6307\u3057\u3001\u4f8b\u3048\u3070\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u884c\u3001\u4f8b\u5916\u51e6\u7406\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5909\u6570\u306e\u5024\u306e\u5909\u66f4\u306a\u3069\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002Spring AOP\u306b\u304a\u3044\u3066\u306f\u3001\u63a5\u5408\u70b9\u306f\u5e38\u306b\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u884c\u3092\u6307\u3057\u307e\u3059\u3002<\/p>\n<p>\u30a2\u30c9\u30d0\u30a4\u30b9\u306e\u5f15\u6570: \u30a2\u30c9\u30d0\u30a4\u30b9\u30e1\u30bd\u30c3\u30c9\u306b\u5f15\u6570\u3092\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 args()\u306e\u8868\u73fe\u3092\u30dd\u30a4\u30f3\u30c8\u30ab\u30c3\u30c8\u306b\u4f7f\u7528\u3057\u3001\u5f15\u6570\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u306b\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u5f15\u6570\u306e\u578b\u304c\u78ba\u5b9a\u3059\u308b\u30a2\u30c9\u30d0\u30a4\u30b9\u30e1\u30bd\u30c3\u30c9\u3067\u540c\u3058\u540d\u524d\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306f\u3053\u308c\u3089\u306e\u6982\u5ff5\u306f\u6df7\u4e71\u3057\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u304c\u3001Spring\u306e\u30a2\u30b9\u30da\u30af\u30c8\u3001\u30a2\u30c9\u30d0\u30a4\u30b9\u3001\u4f8b\u3092\u901a\u3058\u3066\u9032\u3081\u3070\u3001\u7c21\u5358\u306b\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>12. Spring AOP\u3068AspectJ AOP\u306e\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>AspectJ\u306f\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u7523\u696d\u6a19\u6e96\u5b9f\u88c5\u3067\u3042\u308a\u3001\u4e00\u65b9\u306eSpring\u306f\u4e00\u90e8\u306e\u30b1\u30fc\u30b9\u306b\u304a\u3044\u3066AOP\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002Spring AOP\u3068AspectJ\u306e\u4e3b\u306a\u9055\u3044\u306f\u6b21\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spring AOP is simpler to use than AspectJ because we don\u2019t need to worry about the weaving process.<\/li>\n<li>Spring AOP supports AspectJ annotations, so if you are familiar with AspectJ then working with Spring AOP is easier.<\/li>\n<li>Spring AOP supports only proxy-based AOP, so it can be applied only to method execution join points. AspectJ support all kinds of pointcuts.<\/li>\n<li>One of the shortcomings of Spring AOP is that it can be applied only to the beans created through Spring Context.<\/li>\n<\/ul>\n<h3>13. Spring IoC \u30b3\u30f3\u30c6\u30ca\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u5236\u5fa1\u53cd\u8ee2\uff08IoC\uff09\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u9593\u306e\u7de9\u3044\u7d50\u5408\u3092\u5b9f\u73fe\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002\u30e9\u30f3\u30bf\u30a4\u30e0\u6642\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u7d50\u5408\u3092\u7de9\u3081\u3001\u52d5\u7684\u306a\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u4ed6\u306e\u7d44\u307f\u7acb\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u6ce8\u5165\u3055\u308c\u308b\u4f9d\u5b58\u95a2\u4fc2\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002Spring IoC\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u4f9d\u5b58\u95a2\u4fc2\u3092\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u6ce8\u5165\u3057\u3001\u79c1\u305f\u3061\u304c\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u6e96\u5099\u3057\u307e\u3059\u3002<\/p>\n<p>Spring Framework\u306eIoC\u30b3\u30f3\u30c6\u30ca\u30af\u30e9\u30b9\u306f\u3001org.springframework.beans\u304a\u3088\u3073org.springframework.context\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4e00\u90e8\u3067\u3042\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u5207\u308a\u96e2\u3059\u305f\u3081\u306e\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u79c1\u305f\u3061\u304c\u4f7f\u7528\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u4fbf\u5229\u306aApplicationContext\u306e\u5b9f\u88c5\u306f\u3001\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>AnnotationConfigApplicationContext: For standalone java applications using annotations-based configuration.<\/li>\n<li>ClassPathXmlApplicationContext: For standalone java applications using XML-based configuration.<\/li>\n<li>FileSystemXmlApplicationContext: Similar to ClassPathXmlApplicationContext except that the XML configuration file can be loaded from anywhere in the file system.<\/li>\n<li>AnnotationConfigWebApplicationContext and XmlWebApplicationContext for web applications.<\/li>\n<\/ul>\n<h3>14. \u30b9\u30d7\u30ea\u30f3\u30b0\u30fb\u30d3\u30fc\u30f3\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f (Supuringu B\u012bn to wa nan desu ka?)<\/h3>\n<p>Spring IoC\u30b3\u30f3\u30c6\u30ca\u306b\u3088\u3063\u3066\u521d\u671f\u5316\u3055\u308c\u308b\u3001\u901a\u5e38\u306eJava\u30af\u30e9\u30b9\u306fSpring Bean\u3068\u547c\u3070\u308c\u307e\u3059\u3002Spring Bean\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u3001Spring ApplicationContext\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<p>Spring IoC \u30b3\u30f3\u30c6\u30ca\u306f\u3001Spring Bean\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u3001Bean\u306e\u30b9\u30b3\u30fc\u30d7\u3001\u304a\u3088\u3073Bean\u306b\u5fc5\u8981\u306a\u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<\/p>\n<h3>15. \u30b9\u30d7\u30ea\u30f3\u30b0\u306e\u30d3\u30fc\u30f3\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u91cd\u8981\u6027\u306f\u4f55\u3067\u3059\u304b\uff1f (Supuringu no biin no settei fairu no juuyousei wa nan desu ka?)<\/h3>\n<p>\u79c1\u305f\u3061\u306f\u3001Spring\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u3088\u3063\u3066\u521d\u671f\u5316\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30d3\u30fc\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u3001Spring Bean\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Spring ApplicationContext\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3068\u3001spring bean\u306eXML\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3059\u3079\u3066\u306e\u30d3\u30fc\u30f3\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c\u521d\u671f\u5316\u3055\u308c\u308b\u3068\u3001\u7570\u306a\u308b\u30d3\u30fc\u30f3\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u6625\u306e\u30d3\u30fc\u30f3\u306e\u8a2d\u5b9a\u4ee5\u5916\u306b\u3082\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306fSpring MVC\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u3001\u30d3\u30e5\u30fc\u30ea\u30be\u30eb\u30d0\u3001\u304a\u3088\u3073\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u4ed6\u306e\u8981\u7d20\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>\u30af\u30e9\u30b9\u3092Spring Bean\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring Bean\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306f3\u3064\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>XML\u8a2d\u5b9a\uff1a\u3053\u308c\u306f\u6700\u3082\u4eba\u6c17\u306e\u3042\u308b\u8a2d\u5b9a\u3067\u3042\u308a\u3001Spring Bean\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u5185\u306ebean\u8981\u7d20\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\uff1a<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>bean<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>myBean<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>com.scdev.spring.beans.MyBean<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>Java\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\uff1a\u3082\u3057\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u307f\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001@Bean\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066Spring\u306e\u30d3\u30fc\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f@Configuration\u30af\u30e9\u30b9\u3068\u5171\u306b\u4f7f\u7528\u3055\u308c\u3001Spring\u306e\u30d3\u30fc\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u306e\u8a2d\u5b9a\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token annotation punctuation\">@Configuration<\/span>\r\n<span class=\"token annotation punctuation\">@ComponentScan<\/span><span class=\"token punctuation\">(<\/span>value<span class=\"token operator\">=<\/span><span class=\"token string\">\"com.scdev.spring.main\"<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MyConfiguration<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token annotation punctuation\">@Bean<\/span>\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token class-name\">MyService<\/span> <span class=\"token function\">getService<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">return<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyService<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u3053\u306e\u8c46\u3092Spring\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token class-name\">AnnotationConfigApplicationContext<\/span> ctx <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">AnnotationConfigApplicationContext<\/span><span class=\"token punctuation\">(<\/span>\r\n\t\t<span class=\"token class-name\">MyConfiguration<\/span><span class=\"token punctuation\">.<\/span><span class=\"token keyword\">class<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token class-name\">MyService<\/span> service <span class=\"token operator\">=<\/span> ctx<span class=\"token punctuation\">.<\/span><span class=\"token function\">getBean<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">MyService<\/span><span class=\"token punctuation\">.<\/span><span class=\"token keyword\">class<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<p>\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\uff1a@Component\u3001@Service\u3001@Repository\u3001@Controller\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30af\u30e9\u30b9\u306b\u4f7f\u7528\u3057\u3066\u3001\u305d\u308c\u3089\u3092Spring\u306e\u30d3\u30fc\u30f3\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u30af\u30e9\u30b9\u3092\u30b9\u30ad\u30e3\u30f3\u3059\u308b\u305f\u3081\u306e\u30d9\u30fc\u30b9\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\uff1a<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">context:<\/span>component-scan<\/span> <span class=\"token attr-name\">base-package<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>com.scdev.spring<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<h3>17. Spring Bean \u306e\u7570\u306a\u308b\u30b9\u30b3\u30fc\u30d7\u306f\u4f55\u3067\u3059\u304b\uff1f (Spring Bean no kotonaru suk\u014dpu wa nan desu ka?)<\/h3>\n<p>Spring Beans\u306b\u306f\u30015\u3064\u306e\u30b9\u30b3\u30fc\u30d7\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30b7\u30f3\u30b0\u30eb\u30c8\u30f3\uff1a\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306b1\u3064\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u307f\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306fSpring\u30d3\u30fc\u30f3\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b9\u30b3\u30fc\u30d7\u3067\u3059\u3002\u3053\u306e\u30b9\u30b3\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u306f\u3001Spring\u30d3\u30fc\u30f3\u306b\u5171\u6709\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3001\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u30c7\u30fc\u30bf\u306e\u4e0d\u6574\u5408\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\uff1a\u30d3\u30fc\u30f3\u304c\u8981\u6c42\u3055\u308c\u308b\u5ea6\u306b\u65b0\u3057\u3044\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\uff1a\u3053\u308c\u306f\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u30b9\u30b3\u30fc\u30d7\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u65b0\u3057\u3044\u30d3\u30fc\u30f3\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30bb\u30c3\u30b7\u30e7\u30f3\uff1a\u30b3\u30f3\u30c6\u30ca\u306b\u3088\u3063\u3066\u3001\u5404HTTP\u30bb\u30c3\u30b7\u30e7\u30f3\u3054\u3068\u306b\u65b0\u3057\u3044\u30d3\u30fc\u30f3\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u30b0\u30ed\u30fc\u30d0\u30eb\u30bb\u30c3\u30b7\u30e7\u30f3\uff1a\u3053\u308c\u306f\u30dd\u30fc\u30c8\u30ec\u30c3\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30bb\u30c3\u30b7\u30e7\u30f3\u30d3\u30fc\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>Spring Framework\u306f\u62e1\u5f35\u53ef\u80fd\u3067\u3042\u308a\u3001\u81ea\u5206\u81ea\u8eab\u306e\u30b9\u30b3\u30fc\u30d7\u3082\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u63d0\u4f9b\u3059\u308b\u30b9\u30b3\u30fc\u30d7\u3067\u5341\u5206\u3067\u3059\u3002Spring\u306e\u30d3\u30fc\u30f3\u306e\u30b9\u30b3\u30fc\u30d7\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001bean\u8981\u7d20\u306e&#8221;scope&#8221;\u5c5e\u6027\u307e\u305f\u306f\u6ce8\u91c8\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u306b\u5bfe\u3059\u308b@Scope\u6ce8\u91c8\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>18. \u30b9\u30d7\u30ea\u30f3\u30b0\u30fb\u30d3\u30fc\u30f3\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u306f\u4f55\u3067\u3059\u304b\uff1f (Supuringu b\u012bn no raifusaikuru wa nan desu ka?)<\/h3>\n<p>Spring\u30b3\u30f3\u30c6\u30ca\u306b\u3088\u3063\u3066Spring\u306e\u30d3\u30fc\u30f3\u304c\u521d\u671f\u5316\u3055\u308c\u3001\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c\u7834\u68c4\u3055\u308c\u308b\u3068\u3001\u521d\u671f\u5316\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30d3\u30fc\u30f3\u3082\u7834\u68c4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u5927\u62b5\u306e\u5834\u5408\u3067\u3046\u307e\u304f\u52d5\u4f5c\u3057\u307e\u3059\u304c\u3001\u6642\u306b\u306f\u30d3\u30fc\u30f3\u3092\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u524d\u306b\u4ed6\u306e\u30ea\u30bd\u30fc\u30b9\u306e\u521d\u671f\u5316\u3084\u691c\u8a3c\u3092\u884c\u3044\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30d3\u30fc\u30f3\u306e\u30dd\u30b9\u30c8\u521d\u671f\u5316\u30e1\u30bd\u30c3\u30c9\u3068\u30d7\u30ea\u30c7\u30b9\u30c8\u30ed\u30a4\u30e1\u30bd\u30c3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f2\u3064\u306e\u65b9\u6cd5\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059 &#8211; InitializingBean\u3068DisposableBean\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3059\u308b\u304b\u3001Spring\u30d3\u30fc\u30f3\u306e\u8a2d\u5b9a\u3067init-method\u3068destroy-method\u5c5e\u6027\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u300cSpring\u30d3\u30fc\u30f3\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u30e1\u30bd\u30c3\u30c9\u300d\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>19. Spring Bean\u5185\u3067ServletContext\u3068ServletConfig\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u306f\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>Spring\u306e\u30d3\u30fc\u30f3\u5185\u3067\u3001Container\u56fa\u6709\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u306f2\u3064\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Implementing Spring *Aware interfaces, for these ServletContextAware and ServletConfigAware interfaces, for a complete example of these aware interfaces, please read Spring Aware Interfaces.<\/li>\n<li>Using @Autowired annotation with bean variable of type ServletContext and ServletConfig. They will work only in servlet container-specific environments only.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code><span class=\"token annotation punctuation\">@Autowired<\/span>\r\n<span class=\"token class-name\">ServletContext<\/span> servletContext<span class=\"token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<h3>20. \u30d3\u30fc\u30f3\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u3068@Autowired\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u521d\u671f\u5316\u6642\u306bSpring Bean\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u6ce8\u5165\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3092Spring Bean Wiring\u3068\u547c\u3073\u307e\u3059\u3002<\/p>\n<p>\u901a\u5e38\u3001\u3059\u3079\u3066\u306eBean\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u660e\u793a\u7684\u306a\u914d\u7dda\u3092\u884c\u3046\u306e\u304c\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3067\u3059\u304c\u3001Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u307e\u305f\u3001\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001@Autowired\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30d5\u30a3\u30fc\u30eb\u30c9\u3084\u30e1\u30bd\u30c3\u30c9\u306b\u4f7f\u7528\u3057\u3066\u3001byType\u3067\u306e\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u6a5f\u80fd\u3059\u308b\u305f\u3081\u306b\u306f\u3001Spring Bean\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u69cb\u6210\u3092\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001context:annotation-config\u8981\u7d20\u306b\u3088\u3063\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>@Autowired\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u95a2\u3059\u308b\u8a73\u7d30\u306f\u3001Spring Autowire Example\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>21. \u30b9\u30d7\u30ea\u30f3\u30b0\u30d3\u30fc\u30f3\u306e\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u306b\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u7570\u306a\u308b\u30bf\u30a4\u30d7\u304c\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u30014\u3064\u306e\u30bf\u30a4\u30d7\u306e\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>byName\u306b\u3088\u308b\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>byType\u306b\u3088\u308b\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b\u3088\u308b\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>@Autowired\u3068@Qualifier\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308b\u30aa\u30fc\u30c8\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0<\/ol>\n<p>Spring 3.1\u3088\u308a\u524d\u3067\u306f\u3001autowire by autodetect\u3068\u3044\u3046\u540c\u69d8\u306e\u6a5f\u80fd\u304cautowire by constructor\u3084byType\u3068\u540c\u69d8\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001Spring Bean Autowiring\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>22. \u30b9\u30d7\u30ea\u30f3\u30b0\u306e\u30d3\u30fc\u30f3\u306f\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u304b\uff1f (Supuringu no b\u012bn wa sureddo s\u0113fu o teiky\u014d shiteimasu ka?)<\/h3>\n<p>Spring\u30d3\u30fc\u30f3\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30b3\u30fc\u30d7\u306f\u30b7\u30f3\u30b0\u30eb\u30c8\u30f3\u3067\u3059\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3054\u3068\u306b1\u3064\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3057\u304b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u3069\u306e\u30b9\u30ec\u30c3\u30c9\u3067\u3082\u66f4\u65b0\u3067\u304d\u308b\u30af\u30e9\u30b9\u30ec\u30d9\u30eb\u306e\u5909\u6570\u3092\u6301\u3064\u3068\u3001\u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u304c\u4fdd\u305f\u308c\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u30e2\u30fc\u30c9\u3067\u306fSpring\u30d3\u30fc\u30f3\u306f\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<p>\u3057\u304b\u3057\u306a\u304c\u3089\u3001\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u3092\u4fdd\u8a3c\u3059\u308b\u305f\u3081\u306b\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u72a0\u7272\u3092\u6255\u3063\u3066\u30b9\u30d7\u30ea\u30f3\u30b0\u30d3\u30fc\u30f3\u306e\u30b9\u30b3\u30fc\u30d7\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u3001\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u3001\u307e\u305f\u306f\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u8a2d\u8a08\u4e0a\u306e\u6c7a\u5b9a\u3067\u3042\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>23. Spring MVC\u306b\u304a\u3051\u308bController\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>MVC\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u540c\u69d8\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3059\u3079\u3066\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3001\u305d\u308c\u3089\u3092\u8a2d\u5b9a\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u306b\u9001\u4fe1\u3057\u3066\u51e6\u7406\u3059\u308b\u30af\u30e9\u30b9\u3067\u3059\u3002Spring MVC\u3067\u306f\u3001DispatcherServlet\u304c\u30d5\u30ed\u30f3\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001Spring Bean\u306e\u8a2d\u5b9a\u306b\u57fa\u3065\u3044\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/p>\n<p>Controller\u30af\u30e9\u30b9\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30de\u30c3\u30d4\u30f3\u30b0\u306b\u57fa\u3065\u3044\u3066\u7570\u306a\u308b\u7a2e\u985e\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u8cac\u4efb\u304c\u3042\u308a\u307e\u3059\u3002@Controller\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u901a\u5e38\u3001\u7279\u5b9a\u306eURI\u30de\u30c3\u30d4\u30f3\u30b0\u306e\u30cf\u30f3\u30c9\u30e9\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b@RequestMapping\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3>\u300c@Component\u300d\u3001\u300c@Controller\u300d\u3001\u300c@Repository\u300d\u3001\u300c@Service\u300d\u3068\u3044\u3046\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306fSpring\u306b\u304a\u3051\u308b\u9055\u3044\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>@Component\u306f\u30af\u30e9\u30b9\u304c\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30af\u30e9\u30b9\u306f\u81ea\u52d5\u691c\u51fa\u306e\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u3067Bean\u3068\u3057\u3066\u69cb\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>@Controller\u306f\u3001MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u308b\u7279\u5b9a\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3042\u308a\u3001\u4e3b\u306bRequestMapping\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>@Repository\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u30ea\u30dd\u30b8\u30c8\u30ea\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u3001\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u30fb\u53d6\u5f97\u30fb\u691c\u7d22\u306e\u305f\u3081\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001DAO\u30d1\u30bf\u30fc\u30f3\u306e\u5b9f\u88c5\u30af\u30e9\u30b9\u306b\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>@Service\u306f\u3001\u30af\u30e9\u30b9\u304c\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u901a\u5e38\u3001\u3044\u304f\u3064\u304b\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u30d3\u30b8\u30cd\u30b9\u30d5\u30a1\u30b5\u30fc\u30c9\u30af\u30e9\u30b9\u306b\u306f\u3001\u3053\u308c\u304c\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u79c1\u305f\u3061\u306f\u3001\u81ea\u52d5\u691c\u51fa\u306e\u305f\u3081\u306b\u4e0a\u8a18\u306e\u6ce8\u91c8\u306e\u3044\u305a\u308c\u304b\u3092\u30af\u30e9\u30b9\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u7570\u306a\u308b\u30bf\u30a4\u30d7\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u6ce8\u91c8\u4ed8\u3051\u3055\u308c\u305f\u30af\u30e9\u30b9\u306e\u76ee\u7684\u3092\u7c21\u5358\u306b\u533a\u5225\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>DispatcherServlet\u3068ContextLoaderListener\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>DispatcherServlet\u306fSpring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u30d5\u30ed\u30f3\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u3042\u308a\u3001spring bean\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u8a2d\u5b9a\u3055\u308c\u305f\u3059\u3079\u3066\u306ebean\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3001@Component\u3001@Controller\u3001@Repository\u3001\u307e\u305f\u306f@Service\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u4ed8\u3051\u3089\u308c\u305fbean\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>ContextLoaderListener\u306f\u3001Spring\u306e\u30eb\u30fc\u30c8\u306eWebApplicationContext\u3092\u8d77\u52d5\u304a\u3088\u3073\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u305f\u3081\u306e\u30ea\u30b9\u30ca\u30fc\u3067\u3059\u3002\u91cd\u8981\u306a\u6a5f\u80fd\u306f\u3001ApplicationContext\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u3092ServletContext\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u306b\u7d50\u3073\u3064\u3051\u3001ApplicationContext\u306e\u4f5c\u6210\u3092\u81ea\u52d5\u5316\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7570\u306a\u308bSpring\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u9593\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u5171\u6709\u306eBean\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>26. Spring\u306b\u304a\u3051\u308bViewResolver\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>ViewResolver\u5b9f\u88c5\u306f\u3001\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u3092\u540d\u524d\u3067\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u305d\u308c\u3092Spring\u306ebean\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\uff1a<\/p>\n<pre class=\"post-pre\"><code><span class=\"token comment\">&lt;!-- Resolves views selected for rendering by @Controllers to .jsp resources in the \/WEB-INF\/views directory --&gt;<\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.web.servlet.view.InternalResourceViewResolver<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>prefix<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>\/WEB-INF\/views\/<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>suffix<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>.jsp<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>InternalResourceViewResolver\u306f\u3001ViewResolver\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4e00\u3064\u306e\u5b9f\u88c5\u3067\u3042\u308a\u3001\u30d3\u30fc\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u901a\u3058\u3066\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u63a5\u5c3e\u8f9e\u306e\u4f4d\u7f6e\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u304c\u300chome\u300d\u3092\u8fd4\u3059\u5834\u5408\u3001\u30d3\u30e5\u30fc\u30ea\u30be\u30eb\u30d0\u306f\/WEB-INF\/views\/home.jsp\u306b\u914d\u7f6e\u3055\u308c\u305f\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<h3>27. MultipartResolver\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f\u3044\u3064\u4f7f\u7528\u3055\u308c\u307e\u3059\u304b\uff1f<\/h3>\n<p>MultipartResolver\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30b3\u30e2\u30f3\u30ba\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30ea\u30be\u30eb\u30d0\u30fc\u3068\u30b9\u30bf\u30f3\u30c0\u30fc\u30c9\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30ea\u30be\u30eb\u30d0\u30fc\u306f\u3001Spring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u63d0\u4f9b\u3059\u308b2\u3064\u306e\u5b9f\u88c5\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u30ea\u30be\u30eb\u30d0\u30fc\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001Spring Bean\u306e\u8a2d\u5b9a\u3067\u30bf\u30a4\u30d7\u3092MultipartResolver\u3068\u3057\u3066\u540d\u524d\u304c\u300cmultipartResolver\u300d\u306e\u30d3\u30fc\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30de\u30eb\u30c1\u30d1\u30fc\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u8a2d\u5b9a\u3055\u308c\u305fMultipartResolver\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u3001\u30e9\u30c3\u30d7\u3055\u308c\u305fHttpServletRequest\u304c\u6e21\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u304b\u3089\u3001\u305d\u308c\u304c\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30af\u30e9\u30b9\u3067\u4f7f\u7528\u3055\u308c\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3057\u3001\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring MVC\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>28. Spring MVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u304a\u3051\u308b\u4f8b\u5916\u306e\u6271\u3044\u65b9\u306f\u3069\u3046\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring MVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u5f37\u56fa\u306a\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306e\u4ee5\u4e0b\u306e\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30d9\u30fc\u30b9 &#8211; \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30af\u30e9\u30b9\u5185\u306b\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u306b\u306f\u3001@ExceptionHandler\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u308b\u3060\u3051\u3067\u826f\u3044\u3067\u3059\u3002<\/p>\n<p>\u30b0\u30ed\u30fc\u30d0\u30eb\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc &#8211; \u4f8b\u5916\u51e6\u7406\u306f\u6a2a\u65ad\u7684\u306a\u95a2\u5fc3\u4e8b\u3067\u3042\u308a\u3001Spring\u3067\u306f\u3069\u306e\u30af\u30e9\u30b9\u3067\u3082\u4f7f\u7528\u3067\u304d\u308b@ControllerAdvice\u6ce8\u91c8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u65e5\u672c\u8a9e\u3067\u306e\u8868\u73fe\u4f8b\uff1a<br \/>\nHandlerExceptionResolver\u306e\u5b9f\u88c5 &#8211; \u4e00\u822c\u7684\u306a\u4f8b\u5916\u306b\u5bfe\u3057\u3066\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u9759\u7684\u306a\u30da\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002Spring Framework\u306b\u306fHandlerExceptionResolver\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u304c\u3042\u308a\u3001\u3053\u308c\u3092\u5b9f\u88c5\u3057\u3066\u30b0\u30ed\u30fc\u30d0\u30eb\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b0\u30ed\u30fc\u30d0\u30eb\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u3053\u306e\u8ffd\u52a0\u65b9\u6cd5\u306e\u7406\u7531\u306f\u3001Spring Framework\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5b9f\u88c5\u30af\u30e9\u30b9\u3082\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001spring\u306ebean\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3059\u308c\u3070\u3001spring\u306e\u4f8b\u5916\u51e6\u7406\u306e\u5229\u70b9\u304c\u5f97\u3089\u308c\u308b\u304b\u3089\u3067\u3059\u3002<\/p>\n<p>\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring\u306e\u4f8b\u5916\u51e6\u7406\u306e\u4f8b\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>29. Java\u30d7\u30ed\u30b0\u30e9\u30e0\u3067ApplicationContext\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u3069\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eJava\u30d7\u30ed\u30b0\u30e9\u30e0\u3067Spring\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>AnnotationConfigApplicationContext: \u30b9\u30d7\u30ea\u30f3\u30b0\u3092\u5358\u72ec\u306eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3057\u3001\u8a2d\u5b9a\u306b\u6ce8\u91c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u3092\u521d\u671f\u5316\u3057\u3001\u30d3\u30fc\u30f3\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>ClassPathXmlApplicationContext: \u30b9\u30d7\u30ea\u30f3\u30b0\u30d3\u30fc\u30f3\u306e\u8a2d\u5b9aXML\u30d5\u30a1\u30a4\u30eb\u304c\u5358\u72ec\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306b\u3042\u308b\u5834\u5408\u3001\u3053\u306e\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3057\u3001\u30b3\u30f3\u30c6\u30ca\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>FileSystemXmlApplicationContext: \u3053\u308c\u306fClassPathXmlApplicationContext\u3068\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001XML\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u3069\u3053\u304b\u3089\u3067\u3082\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/ol>\n<h3>30. \u79c1\u305f\u3061\u306f\u8907\u6570\u306eSpring\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u304b\uff1f (Watashitachi wa fukus\u016b no Spring no settei fairu wo shiy\u014d suru koto wa dekimasu ka?)<\/h3>\n<p>Spring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001contextConfigLocation\u3092\u901a\u3058\u3066\u8907\u6570\u306eSpring\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5834\u6240\u306e\u6587\u5b57\u5217\u306f\u3001\u30b3\u30f3\u30de\u3068\u30b9\u30da\u30fc\u30b9\u306e\u4efb\u610f\u306e\u6570\u3067\u533a\u5207\u3089\u308c\u305f\u8907\u6570\u306e\u5834\u6240\u3067\u69cb\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>servlet<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>servlet-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>appServlet<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>servlet-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>servlet-class<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>org.springframework.web.servlet.DispatcherServlet<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>servlet-class<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>init-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>contextConfigLocation<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\/WEB-INF\/spring\/appServlet\/servlet-context.xml,\/WEB-INF\/spring\/appServlet\/servlet-jdbc.xml<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>init-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>load-on-startup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>load-on-startup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>servlet<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>\u8907\u6570\u306e\u30eb\u30fc\u30c8\u30ec\u30d9\u30eb\u306eSpring\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u3001context-param\u3092\u4ecb\u3057\u3066\u305d\u308c\u3092\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>context-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>contextConfigLocation<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\/WEB-INF\/spring\/root-context.xml \/WEB-INF\/spring\/root-security.xml<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>context-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>\u5225\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u4ed6\u306e\u8a2d\u5b9a\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067import\u8981\u7d20\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u4f8b\u3048\u3070\uff1a<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>import<\/span> <span class=\"token attr-name\">resource<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>spring-jdbc.xml<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<h3>31. ContextLoaderListener\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>ContextLoaderListener\u306f\u3001\u30eb\u30fc\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u3001\u3059\u3079\u3066\u306e\u4ed6\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u898b\u3048\u308b\u3088\u3046\u306b\u306a\u308bSpring\u30d3\u30fc\u30f3\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u30ea\u30b9\u30ca\u30fc\u30af\u30e9\u30b9\u3067\u3059\u3002\u305d\u308c\u306fweb.xml\u30d5\u30a1\u30a4\u30eb\u306b\u6b21\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>context-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>contextConfigLocation<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-name<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\/WEB-INF\/spring\/root-context.xml<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>param-value<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>context-param<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>listener<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>listener-class<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>org.springframework.web.context.ContextLoaderListener<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>listener-class<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>listener<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<h3>32. Spring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u69cb\u6210\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b7\u30f3\u30d7\u30eb\u306aSpring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Add spring-context and spring-webmvc dependencies in the project.<\/li>\n<li>Configure DispatcherServlet in the web.xml file to handle requests through the spring container.<\/li>\n<li>Spring bean configuration file to define beans, if using annotations then it has to be configured here. Also, we need to configure the view resolver for view pages.<\/li>\n<li>Controller class with request mappings defined to handle the client requests.<\/li>\n<\/ul>\n<p>\u4ee5\u4e0a\u306e\u624b\u9806\u3067\u7c21\u5358\u306aSpring MVC Hello World\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3059\u308b\u306e\u306b\u5341\u5206\u3067\u3059\u3002<\/p>\n<h3>33. Spring MVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092MVC\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u3069\u306e\u3088\u3046\u306b\u95a2\u9023\u4ed8\u3051\u307e\u3059\u304b\uff1f<\/h3>\n<p>Spring MVC\u306f\u3001\u305d\u306e\u540d\u524d\u304c\u793a\u3059\u3088\u3046\u306bModel-View-Controller\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002DispatcherServlet\u306fSpring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d5\u30ed\u30f3\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u53d7\u4fe1\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3001\u305d\u308c\u3089\u3092\u7570\u306a\u308b\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u30e1\u30bd\u30c3\u30c9\u306b\u59d4\u4efb\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e2\u30c7\u30eb\u306fSpring Framework\u306eJava Bean\u3067\u3042\u308c\u3070\u3069\u3093\u306a\u3082\u306e\u3067\u3082\u69cb\u3044\u307e\u305b\u3093\u3002\u4ed6\u306eMVC\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u540c\u69d8\u306b\u3001Spring\u3067\u306f\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u81ea\u52d5\u7684\u306bJava Bean\u306b\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u30e2\u30c7\u30eb\u30d3\u30fc\u30f3\u3092\u5c5e\u6027\u3068\u3057\u3066\u8a2d\u5b9a\u3057\u3001\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u306fJSP\u3001\u9759\u7684\u306aHTML\u306a\u3069\u3067\u3042\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d3\u30e5\u30fc\u30ea\u30be\u30eb\u30d0\u306f\u6b63\u3057\u3044\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u3092\u898b\u3064\u3051\u308b\u8cac\u4efb\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u30d3\u30e5\u30fc\u30da\u30fc\u30b8\u304c\u7279\u5b9a\u3055\u308c\u308b\u3068\u3001\u5236\u5fa1\u306fDispatcherServlet\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u623b\u3055\u308c\u307e\u3059\u3002DispatcherServlet\u306f\u30d3\u30e5\u30fc\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u3001\u6700\u7d42\u7684\u306a\u5fdc\u7b54\u3092\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u8fd4\u3059\u8cac\u4efb\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3>34. Spring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30ed\u30fc\u30ab\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u73fe\u65b9\u6cd5\u306f\u4f55\u3067\u3059\u304b\uff1f (34. Supuringu MVC apurik\u0113shon de no r\u014dkaraizeeshon no jitsugen h\u014dh\u014d wa nan desu ka?)<\/h3>\n<p>\u6625\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u30d0\u30f3\u30c9\u30eb\u3092\u901a\u3058\u3066\u512a\u308c\u305f\u30ed\u30fc\u30ab\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u307e\u305f\u306fi18n\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u57fa\u672c\u7684\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Creating message resource bundles for different locales, such as messages_en.properties, messages_fr.properties, etc.<\/li>\n<li>Defining messageSource bean in the spring bean configuration file of type ResourceBundleMessageSource or ReloadableResourceBundleMessageSource.<\/li>\n<li>For a change of locale support, define localeResolver bean of type CookieLocaleResolver and configure LocaleChangeInterceptor interceptor. An example configuration is shown as follows:<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>messageSource<span class=\"token punctuation\">\"<\/span><\/span>\r\n<span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.context.support.ReloadableResourceBundleMessageSource<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>basename<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>classpath:messages<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>defaultEncoding<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>UTF-8<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n \r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>localeResolver<span class=\"token punctuation\">\"<\/span><\/span>\r\n    <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.web.servlet.i18n.CookieLocaleResolver<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>defaultLocale<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>en<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>cookieName<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>myAppLocaleCookie<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>property<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>cookieMaxAge<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>3600<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>property<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n \r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>interceptors<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.web.servlet.i18n.LocaleChangeInterceptor<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>paramName<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>locale<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>interceptors<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>Use spring:message element in the view pages with key names, DispatcherServlet picks the corresponding value and renders the page in corresponding locale and return as response.<\/li>\n<\/ul>\n<p>\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001\u300cSpring\u30ed\u30fc\u30ab\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u300d\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>35. Spring\u3092\u4f7f\u3063\u3066JSON\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u8fd4\u3059Restful Web\u30b5\u30fc\u30d3\u30b9\u3092\u3069\u306e\u3088\u3046\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u79c1\u305f\u3061\u306fSpring Framework\u3092\u4f7f\u7528\u3057\u3066JSON\u30c7\u30fc\u30bf\u3092\u8fd4\u3059RESTful\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Spring\u306fJackson JSON API\u3068\u306e\u7d71\u5408\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001\u3053\u306eAPI\u3092\u4f7f\u7528\u3057\u3066RESTful\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3067JSON\u5fdc\u7b54\u3092\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u79c1\u305f\u3061\u306f\u3001Spring MVC\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eJSON\u30ec\u30b9\u30dd\u30f3\u30b9\u9001\u4fe1\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>Maven\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3067Jackson JSON\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token comment\">&lt;!-- Jackson --&gt;<\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>com.fasterxml.jackson.core<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>jackson-databind<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>${jackson.databind-version}<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>2. \u30b9\u30d7\u30ea\u30f3\u30b0\u306e\u30d3\u30fc\u30f3\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067RequestMappingHandlerAdapter\u30d3\u30fc\u30f3\u3092\u8a2d\u5b9a\u3057\u3001message converters\u30d7\u30ed\u30d1\u30c6\u30a3\u3092MappingJackson2HttpMessageConverter\u30d3\u30fc\u30f3\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u306e\u8a2d\u5b9a\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token comment\">&lt;!-- Configure to plugin JSON as request and response in method handler --&gt;<\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>messageConverters<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>list<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>ref<\/span> <span class=\"token attr-name\">bean<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>jsonMessageConverter<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>list<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>property<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n     \r\n<span class=\"token comment\">&lt;!-- Configure bean to convert JSON to POJO and vice versa --&gt;<\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>jsonMessageConverter<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.http.converter.json.MappingJackson2HttpMessageConverter<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>3. \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30cf\u30f3\u30c9\u30e9\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001@ResponseBody\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30ec\u30b9\u30dd\u30f3\u30b9\u3068\u3057\u3066\u8fd4\u3057\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\uff1a<\/p>\n<pre class=\"post-pre\"><code><span class=\"token annotation punctuation\">@RequestMapping<\/span><span class=\"token punctuation\">(<\/span>value <span class=\"token operator\">=<\/span> <span class=\"token class-name\">EmpRestURIConstants<\/span><span class=\"token punctuation\">.<\/span><span class=\"token constant\">GET_EMP<\/span><span class=\"token punctuation\">,<\/span> method <span class=\"token operator\">=<\/span> <span class=\"token class-name\">RequestMethod<\/span><span class=\"token punctuation\">.<\/span><span class=\"token constant\">GET<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">public<\/span> <span class=\"token annotation punctuation\">@ResponseBody<\/span> <span class=\"token class-name\">Employee<\/span> <span class=\"token function\">getEmployee<\/span><span class=\"token punctuation\">(<\/span><span class=\"token annotation punctuation\">@PathVariable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"id\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">int<\/span> empId<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    logger<span class=\"token punctuation\">.<\/span><span class=\"token function\">info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Start getEmployee. ID=\"<\/span><span class=\"token operator\">+<\/span>empId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n     \r\n    <span class=\"token keyword\">return<\/span> empData<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>empId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>4. \u3069\u306eAPI\u3092\u901a\u3058\u3066\u3067\u3082\u3001\u30ec\u30b9\u30c8\u30b5\u30fc\u30d3\u30b9\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u3082\u3057Spring\u3092\u4f7f\u7528\u3057\u305f\u3044\u306a\u3089\u3001RestTemplate\u30af\u30e9\u30b9\u3092\u4f7f\u3046\u3053\u3068\u304c\u7c21\u5358\u306b\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring Restful Webservice\u306e\u4f8b\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>36. \u3042\u306a\u305f\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u91cd\u8981\u306aSpring\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u4f55\u3067\u3059\u304b\uff1f (What are the important Spring annotations that you have used?)<\/h3>\n<p>\u79c1\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u7528\u3057\u305fSpring\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u90e8\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059:<\/p>\n<ul class=\"post-ul\">\n<li>@Controller \u2013 for controller classes in Spring MVC project.<\/li>\n<li>@RequestMapping \u2013 for configuring URI mapping in controller handler methods. This is a very important annotation, so you should go through Spring MVC RequestMapping Annotation Examples<\/li>\n<li>@ResponseBody \u2013 for sending Object as a response, usually for sending XML or JSON data as a response.<\/li>\n<li>@PathVariable \u2013 for mapping dynamic values from the URI to handler method arguments.<\/li>\n<li>@Autowired \u2013 for auto wiring dependencies in spring beans.<\/li>\n<li>@Qualifier \u2013 with @Autowired annotation to avoid confusion when multiple instances of bean type are present.<\/li>\n<li>@Service \u2013 for service classes.<\/li>\n<li>@Scope \u2013 for configuring scope of the spring bean.<\/li>\n<li>@Configuration, @ComponentScan, and @Bean \u2013 for java based configurations.<\/li>\n<li>AspectJ annotations for configuring aspects and advice, @Aspect, @Before, @After, @Around, @Pointcut, etc.<\/li>\n<\/ul>\n<h3>37. \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u306e\u5fdc\u7b54\u3068\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u306f\u3044\u3001@ResponseBody\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u53ef\u80fd\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u3063\u3066\u3001\u30ec\u30b9\u30c8\u30d5\u30eb\u306a\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3067JSON\u3084XML\u5f62\u5f0f\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h3>38. Spring MVC \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u65b9\u6cd5\u306f\uff1f<\/h3>\n<p>Spring\u306f\u3001MultipartResolver\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u5b9f\u88c5\u3092\u901a\u3058\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u4f7f\u3044\u65b9\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3001\u6a5f\u80fd\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u8a2d\u5b9a\u306e\u5909\u66f4\u3060\u3051\u304c\u5fc5\u8981\u3067\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9\u30fc\u30e1\u30bd\u30c3\u30c9\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>39. Spring Web MVC Framework\u3067\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u691c\u8a3c\u3059\u308b\u65b9\u6cd5\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring\u3067\u306f\u3001JSR-303\u306b\u57fa\u3065\u3044\u305f\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u30d9\u30fc\u30b9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u72ec\u81ea\u306e\u30ab\u30b9\u30bf\u30e0\u30d0\u30ea\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u5b9f\u88c5\u3067\u304d\u308bValidator\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3082\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002JSR-303\u306b\u57fa\u3065\u3044\u305f\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u5fc5\u8981\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u30d3\u30fc\u30f3\u5909\u6570\u306b\u30a2\u30ce\u30c6\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u30ab\u30b9\u30bf\u30e0\u30d0\u30ea\u30c7\u30fc\u30bf\u306e\u5b9f\u88c5\u306b\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30af\u30e9\u30b9\u3067\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001\u300cSpring MVC\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u300d\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>40. Spring MVC \u306e\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f \u3069\u306e\u3088\u3046\u306b\u4f7f\u7528\u3059\u308b\u306e\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring MVC\u306e\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u306f\u3001\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u304a\u3088\u3073\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001preHandle\u3001postHandle\u3001\u304a\u3088\u3073afterCompletion\u306e3\u3064\u306e\u5834\u6240\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30cf\u30f3\u30c9\u30e9\u30fc\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u306f\u3001HandlerInterceptor \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3059\u308b\u304b\u3001\u62bd\u8c61\u30af\u30e9\u30b9 HandlerInterceptorAdapter \u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u3067\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u79c1\u305f\u3061\u306f\u3001Spring\u306eBean\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3059\u3079\u3066\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30c8\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3057\u3001\u7279\u5b9a\u306eURI\u30de\u30c3\u30d4\u30f3\u30b0\u306b\u5bfe\u3057\u3066\u69cb\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u8a73\u7d30\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring MVC Interceptor Example\u3092\u3054\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>41. Spring\u306eJdbcTemplate\u30af\u30e9\u30b9\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f\u307e\u305f\u3001\u305d\u308c\u3092\u3069\u306e\u3088\u3046\u306b\u4f7f\u7528\u3057\u307e\u3059\u304b\uff1f<\/h3>\n<p>Spring Framework\u306f\u3001JDBC API\u3068\u975e\u5e38\u306b\u512a\u308c\u305f\u7d71\u5408\u6027\u3092\u63d0\u4f9b\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u30ed\u30b8\u30c3\u30af\uff08\u63a5\u7d9a\u306e\u30aa\u30fc\u30d7\u30f3\/\u30af\u30ed\u30fc\u30ba\u3001ResultSet\u3001PreparedStatement\u306a\u3069\uff09\u304b\u3089\u306e\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308bJdbcTemplate\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>JdbcTemplate\u306e\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring JDBC\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>42. Spring Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Tomcat JNDI\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u306f\uff1f<\/h3>\n<p>\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ca\u3067\u69cb\u6210\u3055\u308c\u305fJNDI\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30b9\u30d7\u30ea\u30f3\u30b0\u306ebean\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u305d\u308c\u3092\u8a2d\u5b9a\u3057\u3001\u305d\u308c\u3092\u30b9\u30d7\u30ea\u30f3\u30b0\u306ebean\u306b\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066\u6ce8\u5165\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u304b\u3089\u3001JdbcTemplate\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>dbDataSource<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.jndi.JndiObjectFactoryBean<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token namespace\">beans:<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>jndiName<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>java:comp\/env\/jdbc\/MyLocalDB<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token namespace\">beans:<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>\u5b8c\u5168\u306a\u4f8b\u306b\u3064\u3044\u3066\u306f\u3001Spring Tomcat JNDI\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>43. \u30b9\u30d7\u30ea\u30f3\u30b0\u3067\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3092\u3069\u306e\u3088\u3046\u306b\u5b9f\u73fe\u3057\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u5ba3\u8a00\u7684\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u304a\u3088\u3073\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u3088\u308b\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3092\u901a\u3058\u3066\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u5ba3\u8a00\u7684\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u306f\u6700\u3082\u5e83\u304f\u4f7f\u308f\u308c\u3066\u304a\u308a\u3001\u4f7f\u3044\u3084\u3059\u3044\u305f\u3081\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002<\/p>\n<p>\u79c1\u305f\u3061\u306f\u3001\u30c7\u30af\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u578b\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u305f\u3081\u306b\u3001@Transactional\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u30e1\u30bd\u30c3\u30c9\u306b\u6ce8\u91c8\u3092\u4ed8\u3051\u307e\u3059\u3002Spring\u30d3\u30fc\u30f3\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u30de\u30cd\u30fc\u30b8\u30e3\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>transactionManager<span class=\"token punctuation\">\"<\/span><\/span>\r\n    <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.jdbc.datasource.DataSourceTransactionManager<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>dataSource<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">ref<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>dataSource<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<h3>44. \u30b9\u30d7\u30ea\u30f3\u30b0 DAO \u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring DAO\u30b5\u30dd\u30fc\u30c8\u306f\u3001JDBC\u3084Hibernate\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u6280\u8853\u3068\u306e\u7d99\u7d9a\u7684\u3067\u7c21\u5358\u306a\u9023\u643a\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001JdbcDaoSupport\u3001HibernateDaoSupport\u3001JdoDaoSupport\u3001JpaDaoSupport\u306e\u3088\u3046\u306a\u5bfe\u5fdc\u3059\u308b\u6280\u8853\u7528\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>Spring DAO\u306f\u4f8b\u5916\u306e\u968e\u5c64\u3082\u4e00\u8cab\u6027\u3092\u6301\u3063\u3066\u304a\u308a\u3001\u7279\u5b9a\u306e\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<h3>45. Spring\u3068Hibernate\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7d71\u5408\u3059\u308b\u65b9\u6cd5\u306f\uff1f (Spring\u3068Hibernate\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u7d71\u5408\u306e\u3084\u308a\u65b9\u306f\uff1f)<\/h3>\n<p>\u3082\u3057Hibernate 3+\u3092\u4f7f\u3063\u3066\u3044\u308b\u5834\u5408\u3001Spring ORM\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066Spring\u3068Hibernate\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5834\u5408\u3001SessionFactory\u304c\u73fe\u5728\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u3001HibernateTemplate\u3084HibernateDaoSupport\u30af\u30e9\u30b9\u306e\u4f7f\u7528\u306f\u907f\u3051\u3001\u4f9d\u5b58\u6027\u6ce8\u5165\u3068DAO\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3088\u308a\u826f\u3044\u3067\u3059\u3002<\/p>\n<p>Spring ORM\u306f\u3001Spring\u306e\u5ba3\u8a00\u7684\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3092\u5229\u7528\u3059\u308b\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001Hibernate\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u305f\u3081\u306b\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3088\u308a\u3082\u3001\u305d\u308c\u3092\u6d3b\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002<\/p>\n<p>\u3088\u308a\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spring Hibernate Integration Example<\/li>\n<li>Spring MVC Hibernate Integration Example<\/li>\n<\/ul>\n<h3>46. Spring Security\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>Spring\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Java\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3044\u3066\u8a8d\u8a3c\u3068\u8a8d\u53ef\u306e\u4e21\u65b9\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001CSRF\u653b\u6483\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8106\u5f31\u6027\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067Spring Security\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u6709\u76ca\u3067\u7c21\u5358\u3067\u3059\u3002@EnableWebSecurity\u306a\u3069\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001Spring Security\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4f7f\u7528\u65b9\u6cd5\u3092\u5b66\u3076\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u3059\u308b\u3079\u304d\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spring Security in Servlet Web Application<\/li>\n<li>Spring MVC and Spring Security Integration Example<\/li>\n<\/ul>\n<h3>47. Spring Bean\u306bjava.util.Properties\u3092\u6ce8\u5165\u3059\u308b\u65b9\u6cd5\u306f\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>\u6307\u5b9a\u3055\u308c\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u30ed\u30fc\u30c9\u3059\u308bpropertyConfigurer\u30d3\u30fc\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3057\u3066\u3001Spring EL\u30b5\u30dd\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u4ed6\u306e\u30d3\u30fc\u30f3\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>bean<\/span> <span class=\"token attr-name\">id<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>propertyConfigurer<span class=\"token punctuation\">\"<\/span><\/span> \r\n  <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>org.springframework.context.support.PropertySourcesPlaceholderConfigurer<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>location<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>\/WEB-INF\/application.properties<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> \r\n\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>bean<\/span> <span class=\"token attr-name\">class<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>com.scdev.spring.EmployeeDaoImpl<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>property<\/span> <span class=\"token attr-name\">name<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>maxReadResults<span class=\"token punctuation\">\"<\/span><\/span> <span class=\"token attr-name\">value<\/span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=<\/span><span class=\"token punctuation\">\"<\/span>${results.read.max}<span class=\"token punctuation\">\"<\/span><\/span><span class=\"token punctuation\">\/&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>bean<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>\u3082\u3057Spring\u306e\u30d3\u30fc\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u6ce8\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token annotation punctuation\">@Value<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"${maxReadResults}\"<\/span><span class=\"token punctuation\">)<\/span> \r\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">int<\/span> maxReadResults<span class=\"token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<h3>48. Spring Framework\u3067\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306e\u3044\u304f\u3064\u304b\u306e\u540d\u524d\u306f\u4f55\u3067\u3059\u304b\uff1f<\/h3>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u591a\u304f\u306e\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u3088\u304f\u4f7f\u308f\u308c\u308b\u3082\u306e\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30b7\u30f3\u30b0\u30eb\u30c8\u30f3\u30d1\u30bf\u30fc\u30f3\uff1a\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30b3\u30fc\u30d7\u3067\u306e\u30d3\u30fc\u30f3\u306e\u4f5c\u6210\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u30d1\u30bf\u30fc\u30f3\uff1a\u30d3\u30fc\u30f3\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u30af\u30e9\u30b9\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u30d1\u30bf\u30fc\u30f3\uff1a\u30d3\u30fc\u30f3\u306e\u30b9\u30b3\u30fc\u30d7\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30a2\u30c0\u30d7\u30bf\u30fc\u30d1\u30bf\u30fc\u30f3\uff1aSpring Web\u3068Spring MVC\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30d7\u30ed\u30ad\u30b7\u30d1\u30bf\u30fc\u30f3\uff1aSpring\u306e\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b5\u30dd\u30fc\u30c8\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30e1\u30bd\u30c3\u30c9\u30d1\u30bf\u30fc\u30f3\uff1aJdbcTemplate\u3001HibernateTemplate\u306a\u3069\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30d5\u30ed\u30f3\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\uff1aSpring MVC\u306eDispatcherServlet\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff1aSpring\u306eDAO\u30b5\u30dd\u30fc\u30c8\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u4f9d\u5b58\u6027\u6ce8\u5165\u3068\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3002<\/ol>\n<h3>Spring Framework\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u306f\u3001\u3069\u3093\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u304b\uff1f<\/h3>\n<p>Spring Framework\u306e\u3044\u304f\u3064\u304b\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>Avoid version numbers in schema reference, to make sure we have the latest configs.<\/li>\n<li>Divide spring bean configurations based on their concerns such as spring-jdbc.xml, spring-security.xml.<\/li>\n<li>For spring beans that are used in multiple contexts in Spring MVC, create them in the root context and initialize with the listener.<\/li>\n<li>Configure bean dependencies as much as possible, try to avoid auto wiring as much as possible.<\/li>\n<li>For application-level properties, the best approach is to create a property file and read it in the spring bean configuration file.<\/li>\n<li>For smaller applications, annotations are useful but for larger applications, annotations can become a pain. If we have all the configuration in XML files, maintaining it will be easier.<\/li>\n<li>Use correct annotations for components for understanding the purpose easily. For services use @Service and for DAO beans use @Repository.<\/li>\n<li>Spring framework has a lot of modules, use what you need. Remove all the extra dependencies that get usually added when you create projects through Spring Tool Suite templates.<\/li>\n<li>If you are using Aspects, make sure to keep the join pint as narrow as possible to avoid advice on unwanted methods. Consider custom annotations that are easier to use and avoid any issues.<\/li>\n<li>Use dependency injection when there is an actual benefit, just for the sake of loose-coupling don\u2019t use it because it\u2019s harder to maintain.<\/li>\n<\/ul>\n<h3>50. Spring Boot\u3068\u306f\u4f55\u3067\u3059\u304b?<\/h3>\n<p>Spring Boot\u306fSpring\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7279\u5fb4\u7684\u306a\u3082\u306e\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3055\u307e\u3056\u307e\u306a\u30bf\u30a4\u30d7\u306eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3057\u3001\u305d\u308c\u3089\u3092\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3067\u304d\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u5b9f\u884c\u53ef\u80fd\u306a\u5358\u4e00\u306eJAR\u30d5\u30a1\u30a4\u30eb\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30c0\u30af\u30c8\u306e\u5c55\u958b\u306b\u5373\u3057\u305f\u30b9\u30b1\u30eb\u30c8\u30f3\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u975e\u5e38\u306b\u8fc5\u901f\u306b\u53d6\u5f97\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u69cb\u7bc9\u3084\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u5c55\u958b\u3068\u3044\u3046\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u3092\u7d4c\u308b\u4ee3\u308f\u308a\u306b\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306b\u3088\u308a\u96c6\u4e2d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u975e\u5e38\u306b\u5e83\u7bc4\u306a\u30c8\u30d4\u30c3\u30af\u3067\u3042\u308b\u305f\u3081\u3001Spring Boot\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u306b\u9032\u3080\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n<p>\u305d\u308c\u304cSpring Framework\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u306e\u3059\u3079\u3066\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u8cea\u554f\u304cJava EE\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u3067\u5f79\u7acb\u3064\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002\u898b\u3064\u3051\u6b21\u7b2c\u3001\u30ea\u30b9\u30c8\u306b\u3055\u3089\u306a\u308b\u8cea\u554f\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3082\u3057\u3053\u306e\u30ea\u30b9\u30c8\u306b\u542b\u3081\u308b\u3079\u304d\u8ffd\u52a0\u306e\u8cea\u554f\u304c\u3042\u308c\u3070\u3001\u30b3\u30e1\u30f3\u30c8\u3067\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u308c\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u3001\u79c1\u306f\u305f\u304f\u3055\u3093\u306eSpring\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u6295\u7a3f\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u8a18\u4e8b\u306f\u3001Spring\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u3067\u306e\u8cea\u554f\u306b\u8a73\u3057\u304f\u8aac\u660e\u3092\u52a0\u3048\u3001\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u3067\u3057\u3087\u3046\u3002 Spring Framework\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26,61],"class_list":["post-981","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-26","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\" \/>\n<meta property=\"og:description\" content=\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-11T20:35:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T19:01:37+00:00\" \/>\n<meta name=\"author\" content=\"\u7dbe\u4e43, \u4e00\u5e0c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u7dbe\u4e43, \u4e00\u5e0c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"74\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\",\"name\":\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2022-11-11T20:35:46+00:00\",\"dateModified\":\"2025-07-31T19:01:37+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff\"},\"description\":\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff\",\"name\":\"\u7dbe\u4e43, \u4e00\u5e0c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g\",\"caption\":\"\u7dbe\u4e43, \u4e00\u5e0c\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/ayanokazuki\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud","description":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/","og_locale":"ja_JP","og_type":"article","og_title":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54","og_description":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-11T20:35:46+00:00","article_modified_time":"2025-07-31T19:01:37+00:00","author":"\u7dbe\u4e43, \u4e00\u5e0c","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u7dbe\u4e43, \u4e00\u5e0c","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"74\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/","name":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2022-11-11T20:35:46+00:00","dateModified":"2025-07-31T19:01:37+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff"},"description":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6625\u306e\u30a4\u30f3\u30bf\u30d3\u30e5\u30fc\u306e\u8cea\u554f\u3068\u56de\u7b54"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/601389077b7f4e4ad6115428e3b73bff","name":"\u7dbe\u4e43, \u4e00\u5e0c","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2228fe98b71141214fb24fb1b5ae44f99bdfa0602bbd89b351f2acd49ece862d?s=96&d=mm&r=g","caption":"\u7dbe\u4e43, \u4e00\u5e0c"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/ayanokazuki\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e6%98%a5%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%93%e3%83%a5%e3%83%bc%e3%81%ae%e8%b3%aa%e5%95%8f%e3%81%a8%e5%9b%9e%e7%ad%94\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":47526,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/981\/revisions\/47526"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}