{"id":2825,"date":"2018-05-13T20:02:22","date_gmt":"2018-05-13T11:02:22","guid":{"rendered":"http:\/\/www.code-magagine.com\/?p=2825"},"modified":"2023-05-27T23:11:14","modified_gmt":"2023-05-27T14:11:14","slug":"%e3%80%90spring-framework%e3%80%91aop%e3%82%a2%e3%82%b9%e3%83%9a%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%82%92%e5%ae%9f%e8%a3%85","status":"publish","type":"post","link":"http:\/\/www.code-magagine.com\/?p=2825","title":{"rendered":"\u3010Spring Framework\u3011AOP(\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0)\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002\uff08\u8a2d\u5b9a\u30af\u30e9\u30b9\u304b\u3089\u5b9f\u88c5\uff09"},"content":{"rendered":"<p>\u524d\u56de\u306e\u8a18\u4e8b\u3067\u306f\u3001AOP\u3092\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"2edxrkMz5K\"><p><a href=\"http:\/\/www.code-magagine.com\/?p=2788\">\u3010Spring Framework\u3011AOP(\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0)\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002\uff08\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b9f\u88c5\uff09<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" src=\"http:\/\/www.code-magagine.com\/?p=2788&#038;embed=true#?secret=2edxrkMz5K\" data-secret=\"2edxrkMz5K\" width=\"500\" height=\"282\" title=\"&#8220;\u3010Spring Framework\u3011AOP(\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0)\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002\uff08\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b9f\u88c5\uff09&#8221; &#8212; \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30de\u30ac\u30b8\u30f3\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>\u6b21\u306f\u3001\u8a2d\u5b9a\u7528\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u3063\u3066\u3001AOP\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<h2>AOP\u3092\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u306e\u8a2d\u5b9a\u3067\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002<\/h2>\n<p>\u5b9f\u88c5\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u4e0b\u8a18\u306e\u30af\u30e9\u30b9\u56f3\u3092\u53c2\u7167\u4e0b\u3055\u3044\u3002<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2835\" src=\"http:\/\/www.code-magagine.com\/wp-content\/uploads\/2018\/05\/AOP_\u8a2d\u5b9a\u30af\u30e9\u30b9.png\" alt=\"\" width=\"873\" height=\"362\" srcset=\"http:\/\/www.code-magagine.com\/wp-content\/uploads\/2018\/05\/AOP_\u8a2d\u5b9a\u30af\u30e9\u30b9.png 873w, http:\/\/www.code-magagine.com\/wp-content\/uploads\/2018\/05\/AOP_\u8a2d\u5b9a\u30af\u30e9\u30b9-300x124.png 300w, http:\/\/www.code-magagine.com\/wp-content\/uploads\/2018\/05\/AOP_\u8a2d\u5b9a\u30af\u30e9\u30b9-768x318.png 768w\" sizes=\"(max-width: 873px) 100vw, 873px\" \/><\/p>\n<h3>Main.java(\u5229\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002\uff09<\/h3>\n<pre class=\"lang:default decode:true\">package com.springapp;\r\n\r\nimport org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.annotation.AnnotationConfigApplicationContext;\r\n\r\npublic class Main {\r\n\r\n    public static void main(String[] args) {\r\n\r\n    \tApplicationContext app =  new AnnotationConfigApplicationContext(AopConfig.class);\r\n\r\n        \/\/AOP\u9069\u7528\u524d\r\n        TestBean bean1 = (TestBean) app.getBean(\"TestBean\");\r\n        bean1.HelloWorld();\r\n\r\n        System.out.println(\"--------------------\");\r\n\r\n        \/\/AOP\u9069\u7528\u5f8c\r\n        TestBean bean2 = (TestBean) app.getBean(\"ProxyFactoryBean\");\r\n        bean2.HelloWorld();\r\n    }\r\n\r\n}<\/pre>\n<h4>\u30af\u30e9\u30b9\u304b\u3089AOP\u306e\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3080\u69cb\u6587<\/h4>\n<p>\u8a2d\u5b9a\u30af\u30e9\u30b9\u3092\u8aad\u307f\u8fbc\u3080\u305f\u3081\u306b\u4e0b\u8a18\u306e\u69cb\u6587\u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">ApplicationContext app = new AnnotationConfigApplicationContext(\u8a2d\u5b9a\u30af\u30e9\u30b9\u540d.class);<\/pre>\n<p>\u305d\u306e\u4ed6\u306e\u69cb\u6587\u306b\u95a2\u3057\u3066\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u8fbc\u3080\u5834\u5408\u306e\u69cb\u6587\u3068\u305d\u308c\u307b\u3069\u9055\u3044\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<h3>TestBean.java(AOP\u3092\u9069\u7528\u3059\u308b\u30af\u30e9\u30b9\u3067\u3059\u3002\uff09<\/h3>\n<pre class=\"lang:default decode:true\">package com.springapp;\r\n\r\npublic class TestBean {\r\n    private String helloWorld;\r\n\r\n    public TestBean() {\r\n        super();\r\n        this.helloWorld = \"Hello World!\";\r\n    }\r\n\r\n    public TestBean(String helloWorld) {\r\n        this.helloWorld = helloWorld;\r\n    }\r\n\r\n    public void HelloWorld() {\r\n        System.out.println(this.helloWorld);\r\n    }\r\n}\r\n<\/pre>\n<h3>AOPClass.java(AOP\u3067\u633f\u5165\u3059\u308b\u51e6\u7406\u306e\u30af\u30e9\u30b9\u3067\u3059\u3002\uff09<\/h3>\n<pre class=\"lang:default decode:true\">package com.springapp;\r\n\r\nimport java.lang.reflect.Method;\r\n\r\nimport org.springframework.aop.AfterReturningAdvice;\r\nimport org.springframework.aop.MethodBeforeAdvice;\r\n\r\npublic class AOPClass implements MethodBeforeAdvice, AfterReturningAdvice {\r\n\r\n\t@Override\r\n\tpublic void before(Method method, Object[] args,Object target) throws Throwable {\r\n\t\tSystem.out.println(\"\u4e8b\u524d\u51e6\u7406\");\r\n\t}\r\n\t\r\n\t@Override\r\n\tpublic void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {\r\n\t\tSystem.out.println(\"\u4e8b\u5f8c\u51e6\u7406\");\r\n\t}\r\n\r\n}\r\n<\/pre>\n<h3>AopConfig.java(AOP\u306e\u8a2d\u5b9a\u30af\u30e9\u30b9\u3067\u3059\u3002\uff09<\/h3>\n<pre class=\"lang:default decode:true\">package com.springapp;\r\n\r\nimport org.springframework.aop.framework.ProxyFactoryBean;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.Configuration;\r\n\r\n@Configuration\r\npublic class AopConfig {\r\n\r\n\tprivate TestBean testBean = new TestBean(\"Hello World!\");\r\n    private AOPClass aopclass = new AOPClass();\r\n\r\n    @Bean\r\n    TestBean TestBean() {\r\n        return testBean;\r\n    }\r\n\r\n    @Bean\r\n    AOPClass AOPClass() {\r\n        return aopclass;\r\n    }\r\n\r\n    @Bean\r\n    ProxyFactoryBean ProxyFactoryBean() {\r\n\r\n    \tProxyFactoryBean bean = new ProxyFactoryBean();\r\n\r\n    \tbean.setTarget(testBean);\r\n        bean.setInterceptorNames(new String[]{\"AOPClass\"});\r\n\r\n        return bean;\r\n    }\r\n\r\n}<\/pre>\n<p>\u4e0b\u8a18\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<h4>\u4f7f\u3063\u3066\u3044\u308b\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3<\/h4>\n<table>\n<tbody>\n<tr>\n<th>\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3<\/th>\n<th>\u8aac\u660e<\/th>\n<\/tr>\n<tr>\n<td>@Configuration<\/td>\n<td>\u8a2d\u5b9a\u30af\u30e9\u30b9\u3068\u3057\u3066\u5ba3\u8a00\u3059\u308b\u305f\u3081\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002\u3053\u308c\u3092\u8a2d\u5b9a\u3057\u3066\u304a\u3051\u3070\u3001\u30e1\u30a4\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u8a2d\u5b9a\u7528\u30af\u30e9\u30b9\u3068\u3057\u3066\u547c\u3073\u51fa\u305b\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td>@Bean<\/td>\n<td>Bean\u8a2d\u5b9a\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002\u3053\u308c\u3092\u8a2d\u5b9a\u3057\u3066\u304a\u3051\u3070\u3001\u30e1\u30a4\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u300cgetBean(\"Bean\u540d\")\u300d\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><\/h3>\n<h3>\u5b9f\u884c\u7d50\u679c<\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2815\" src=\"http:\/\/www.code-magagine.com\/wp-content\/uploads\/2018\/05\/AOP_\u4e8b\u524d\u4e8b\u5f8c.png\" alt=\"\" width=\"189\" height=\"184\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"\u524d\u56de\u306e\u8a18\u4e8b\u3067\u306f\u3001AOP\u3092\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u305f\u3002 \u3010Spring Framework\u3011AOP(\u30a2\u30b9\u30da\u30af\u30c8\u6307\u5411\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0)\u3092\u5b9f\u88c5\u3057\u3066\u307f\u308b\u3002\uff08\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b9f\u88c5\uff09 \u6b21\u306f\u3001\u8a2d\u5b9a\u7528\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u3063\u3066\u3001AOP\u3092\u5b9f\u88c5\u3057 [&hellip;]","protected":false},"author":1,"featured_media":2830,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31],"tags":[],"_links":{"self":[{"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/posts\/2825"}],"collection":[{"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2825"}],"version-history":[{"count":8,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/posts\/2825\/revisions"}],"predecessor-version":[{"id":20572,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/posts\/2825\/revisions\/20572"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=\/wp\/v2\/media\/2830"}],"wp:attachment":[{"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2825"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.code-magagine.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}