MVC利用(7):HTTPリクエスト6部マッピング-カスタムプレゼンテーション


7.HTTPリクエストのマッピング6部-カスタムプレゼンテーション


@requestmappingコメントをメタデータとして使用
  • @GetMappingのようなカスタムアニメーションを作ることができます.
  • メタぶんせき
  • プレゼンテーション
  • springで提供されるほとんどのプレゼンテーションは、プレゼンテーションとして使用できます.
  • コンビネーションノイズ
  • は、1つまたは複数のメタ宣言を組み合わせた宣言
  • である.
  • コードを簡潔に減らすことができます.
  • よりも具体的な意味を与えることができる.
  • @Documented
    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME) // 기본값은 class, 클래스를 로딩하는 순간 사라짐
    @RequestMapping(method = RequestMethod.GET, value = "/hello")
    public @interface GetHelloMapping {
    }
    @Controller
    public class SampleController {
    
        @GetHelloMapping
        @ResponseBody
        public String hello(){
            return "hello";
        }
    }
    @RunWith(SpringRunner.class)
    @WebMvcTest
    public class SampleControllerTest {
    
        @Autowired
        MockMvc mockMvc;
    	
        @Test
        public void helloTest() throws Exception{
            mockMvc.perform(options("/hello"))
                   .andDo(print())
                   .andExpect(status().isOk());
        }
    }
    @Retention
  • この宣言情報はいつまで保持されますか.
  • ソースコード:ソースコードにのみ保持されます.つまり,コンパイルすると,対応する宣言情報が消えてしまう.
  • クラス:コンパイル済み.classファイルに保存します.つまり、実行時にクラスをメモリに読み込むと、その情報は消えます.
  • Runtime:クラスのメモリへの読み込み状態を維持!この情報に基づいて、コード内で特定の論理を実行できます.
  • @Target
  • は、この説明をどこで使用できるかを決定する.
  • @Documented
  • は、その説明のコードを使用する文書にその説明の情報をマークするか否かを決定する.
  • リファレンス
  • インフラストラクチャ:SpringWeb MVC(白旗船)
  • https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beansmeta-annotations
  • https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/AliasFor.html