2015-Springのハナシ

Similar documents

Microsoft PowerPoint - JavaFesta.ppt

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

B2-Servlet-0112.PDF

PowerPoint プレゼンテーション

intra-mart im-JavaEE Framework

Spring Framework 2.0  デファクトスタンダードDIコンテナの現在と未来

JPA & Kuina-Dao入門

untitled

S2Dao入門

intra-mart WebPlatform/AppFramework

Seasar.NET入門

Oracle9i JDeveloper R9.0.3 チュートリアル

S2DaoでもN:Nできます

intra-mart WebPlatform/AppFramework

java_servlet2_見本

ゆみる は こうげきりょく が 2 あがった!

スライド 1

サーブレット (Servlet) とは Web サーバ側で動作する Java プログラム 通常はapache 等のバックグラウンドで動作する Servletコンテナ上にアプリケーションを配置 代表的な Servlet コンテナ Apache Tomcat WebLogic WebSphere Gla

rmi.book

BC4J...4 BC4J Association JSP BC4J JSP OC4J

Microsoft PowerPoint - 4-MySQL50_JDBC_failover.ppt

CAC

いまさら人には聞けない DI×AOP入門

T2でつなごう! -つなぐつながるWebフレームワーク「T2」の紹介

DIコンテナ 前 回 ご 説 明 したSpring DIコンテナに 共 通 するこ とは 依 存 を 注 入 することによってシステム 内 に 存 在 するオブジェクト 同 士 の 結 びつきを 緩 くすることで あり そのための 仕 組 み 提 供 を 意 味 する [Spring のDIコンテナ


untitled

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

Javaで体験するスクリプト言語の威力

Cubby in Action

早分かりS2Dao

WebOTX V6 J2EEアプリケーションのトラブルシューティング

intra-mart im-J2EE Framework

2

WEBシステムのセキュリティ技術

2

WebOTXマニュアル

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

I. EspressReport 100%Java JSP API II. EspressReport Report Designer Report Designer - Report Designer Web Java Web Web Report Designer import java.awt

WTM2019SingleSignOn

intra-mart WebPlatform/AppFramework

WAS V9 アナウンスメント・セミナー資料

Microsoft PowerPoint - Lecture_3

untitled

OC4J-TWP-EJB3-MIGRATION-1013

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

新・明解Java入門

untitled

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

HTML/JSP/Servlet... 7 JSP... 7 Servlet Struts Struts Struts FormBean LoginForm

[1]...1 [2]...1 [3] Java Web...3 [4] Java Web...18 [

TravelXMLを利用した Webサービス実証実験デモ

JB_weblogic_guide.indd

Microsoft PowerPoint - JF2005講演-丸田.ppt

Exam : 1z0-809 日本語 (JPN) Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO 1 / 8 Get Latest & Valid 1z0-809-JPN Exam's Question and Answe

パフォーマンス徹底比較 Seasar2 vs Spring 2006/04/12 株式会社電通国際情報サービスひがやすを株式会社アークシステム本間宏崇 Copyright the Seasar Foundation and the others all rights reserved.

オブジェクト脳のつくり方

Transcription:

1

2

3

4

2003 5

Spring Struts Hibernate Seasar2 2000 2003 2006 J2EE1.2 EJB1.1 Servlet2.1 JSP1.1 Remote から Local な Interface J2EE1.4 EJB2.1 Servlet2.4 JSP2.0 POJO & JPA JavaEE5 EJB3 Servlet2.5 JSP2.1 6

Client 層 プレザンテーション層 ビジネス層ミドル層ミドル層 インテグレーション層 / リソース層 Web コンテナ EJB コンテナ Browser JSP Session EJB Servlet Entity EJB 7

EJB Contaiter 1: 新しい EJBO bject の生成依頼 :H o m e Object Instance Pooling : H o m e In te rface 2:EJB O bject を生成 : E n te rprise Bean :C lient C ode 3:EJBO bject の参照を返す 5: 処理をデレゲート assign 4: 処理の依頼 :R em ote In terface : E J B Object : E n te rprise Bean 8

:C lie n t C o d e <<create>> lo o ku p ( ) return obj SessionBean 利用時のシーケンス図 ctx : InitialC ontext class : PortableRem oteobject narrow ( ) return hom e create( ) return bean hom e : OrderM anagerhom e order( ) rem ove( ) bean : OrderManager /** * * java.naming.factory.initial. * java.naming.provier.ur. * */ Properteis props = System.getProperties(); /* * JNDI */ Context ctx = new InitialContext(props); /* * Home Object */ Object obj = ctx.lookup( OrderManagerHome"); OrderManagerHome home = (OrderManagerHome)javax.rmi.PortableRemoteObject.narrow(obj, OrderManager.class); /* * Remote Object */ OrderManager bean = home.create(); /* * Remote Object */ bean.order(); /* * Remote Object */ bean.remove(); 9

10

2004 2005 11

12

13

EmpServiceImpl 3 利用 EmpDaoImpl 2 セット ( 依存性の注入 ) EmpDao 1 生成 DI コンテナ 14

ServiceImpl find() を呼ぶ Dao find() DaoImpl >java 16:00:01 *Start* find() DaoImpl 16:00:02 *End* find() DaoImpl 17:02:12 *Start* find() DaoImpl 17:02:13 *End* find() DaoImpl 実行結果 public class DaoImpl extends Dao{ public List find() { List list = select(); return list; } } 15

:Bean :Advice 処理の依頼 処理の依頼 Advice の呼び出し :Client Interface :Proxy 自動生成 :Spring Pointcut の参照 Bean 定義ファイル 16

17

public class EmployeeServiceImpl implements EmployeeService{ public List findall() throws Exception { if(log.flag) { System.out.println( ***Start ); } Connection conn = null; EmployeeDao dao = (EmployeeDao)Factory.create(KEY); List employeelist = null; try { employeelist = dao.findall(conn); conn.commit(); } catch(exception e) { conn.rollback(); } finally { conn.close(); } if(log.flag) { System.out.println( ***End ); } return employeelist; } 18

コードはすっきり public class EmployeeServiceImpl implements EmploeeService { private EmployeeDao dao; public List findall() { return dao.findall(); } public void setemployeedao(employeedao dao) { this.dao = dao; } } XML Bean 定義 ( イメージです 拡大しないように ) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org /dtd/s prin g-beans.dtd "> <beans> <!-- jdbc --> <bean id="propertyconfigurer" class="org.springframework.beans.factory.conf ig.pro pertyplaceh olderco nfigurer "> <property name="locations"> <list> <value>com/mamezou/config/jdbc.propert ies</value> </list> </property> </bean> <bean id="datasource" class="org.springframework.jdbc.datasource.dr iverma nagerdatasource "> <property name="driverclassname"><value>${jdbc.dr iverclassname}< /value></pr operty> <property name="url"><value>${jdbc.ur l}</va lue>< /property> <property name="username"><value>${jdbc.user name }</value></p roperty> <property name="password"><value>${jdbc.passwor d}</va lue></property> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionfactory" class="org.springframework.or m.h ibernate.l ocalsession FactoryBean"> <property name="datasource"><ref local="datasource" /></property> <property name="mappingresources"> <value>com/mamezou/person/dao /h ibernate/pers on.hb m.x ml< /value> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.d ialect.h SQLDia lect</pro p> <prop key="hibernate.c3p0.minpoolsize ">1</pr op> <prop key="hibernate.c3p0.maxpoolsize">2</p rop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <!-- Transaction Manager --> <bean id="transactionmanager" class="org.springframework.orm.h ibernate.h ibernatetransactio nmanager "> <property name="sessionfactory"><ref local="sessionfactory" /></property> </bean> <!-- Business Interface --> <bean id="personservice" class="org.springframework.transaction.interceptor.transaction ProxyFactoryBean "> <property name="transactionmanager"><ref local="transactionmanager" /></property> <property name="target"><ref local="personservicetarget" /></property> <property name="transactionattributes"> <props> <prop key="find*">propagation_required, readonly</prop> <prop key="add*">propagation_required, -AddPersonException</prop> <prop key="remove*">propagation_required, -RemovePersonException</prop> </props> </property> </bean> <!-- Business Object --> <bean id="personservicetarget" class="com.mamezou.person.business.pers onserv iceimp l"> <property name="persondao"><ref local="persondao"/></property> </bean> <!-- Data Access Object --> <bean id="persondao" class="com.mamezou.person.da o.h ibernate.persondao Impl"> <property name="sessionfactory"><ref local="sessionfactory"/></property> </bean> </beans> 19

2006 2007 Since2006 20

コードはすっきり public class EmployeeServiceImpl implements EmploeeService { @Autowired private EmployeeDao dao; @Transactional public List findall() { return dao.findall(); } //public void setemployeedao(employeedao dao) { // this.dao = dao; //} } XML Bean 定義 ( イメージです 拡大しないように ) <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org /sche ma/beans " xmlns:xsi="http://www.w3.org/2001 /XML Schema- instance" xmlns:p="http://www.springfra mework.org/sche ma /p" xmlns:aop="http://www.springfra mework.org /schema /aop " xmlns:tx="http://www.springframework.org /sche ma/tx" xsi:schemalocation="http://www.springfra mework.org /sche ma/beans http://www.springframework.org/sc hema /beans/s prin g-beans-2.5.xsd http://www.springframework.org/sc hema /aop http://www.springframework.org/sche ma/aop /spr ing-aop-2.5.xsd http://www.springframework.org/sc hema /tx http://www.springframework.org/sche ma/tx/s prin g-tx-2.5.xsd"> <bean id="propertyconfigurer" class="org.springframework.beans.factory.conf ig.prope rtyplaceh olderco nfigurer "> <property name="location" value="classpath:jdbc.properties"/> <property name="ignoreunresolvableplaceho lders" value="true"/> </bean> <bean id="datasource" class="org.apache.commons.dbc p.basicdatasource" destroy-method="close"> <property name="driverclassname" value="${datasource.driverclassname}"></property> <property name="url" value="${datasource.url}"></pro perty> <property name="username" value="${datasource.username}"></property> <property name="password" value="${datasource.password}"></prope rty> </bean> <!-- Default Connection --> <bean id="sessionfactory" class="org.springframework.orm.h ibernate3.ann otation.a nnotation Sessio nfactorybean"> <property name="datasource" ref="datasource" /> <property name="configlocation"> <value>/web-inf/hibernate.cfg.xml</va lue> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.d ialect.h SQLDia lect</pro p> <prop key="hibernate.c3p0.minpoolsize ">1</pr op> <prop key="hibernate.c3p0.maxpoolsize">2</p rop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="schemaupdate" value="false" /> </bean> <bean id="txmanager" class="org.springframework.orm.hibernate3.hibe rnatetransaction Manager "> <property name="sessionfactory" ref="sessionfactory" /> </bean> <tx:annotation-driven transaction-manager="txmanager"/> <bean id="jdbctemplate" class="org.springframework.jd bc.core.jdbcte mp late"> <property name="datasource" ref="datasource"/> </bean> <bean id="baseservice" abstract="true" lazy-init="true"> <property name="jdbctemplate" ref="jdbctemplate"/> <property name="datasource" ref="datasource"/> <property name="sessionfactory" ref="sessionfactory"/> </bean> </beans> 21

22

2009 2011 23

Client 層 中間層 EIS 層 プレゼンテーション層ビジネス層データアクセス層 Browser 自家製のフレームワーク JavaBeans 自家製のフレームワーク RDB Session Bean Entity Bean 24

Client 層 中間層 EIS 層 プレゼンテーション層 ビジネス層 データアクセス層 Browser Struts JavaBeans 自家製のフレームワーク RDB 25

Client 層 中間層 EIS 層 プレゼンテーション層ビジネス層データアクセス層 Browser JSF Struts POJO Hibernate ibatis RDB DIxAOP コンテナ ( オブジェクトの管理やトランザクション制御など ) Seasar2 Spring1~2 26

Client 層 中間層 EIS 層 プレゼンテーション層ビジネス層データアクセス層 Browser Spring MVC POJO Hibernate RDB Struts MyBATIS 2013 年 EOL DIxAOP コンテナ ( オブジェクトの管理やトランザクション制御など ) 2016 年 9 月に開発が終了 Seasar2 Spring JavaConfig + アノテーション 27

28

今は Pivotal が Spring をサポート 29

30

2013 Now Printing! 31

App App App App App App App 32

UI Monolithic から Microservices DB Spring Boot Microservice & Spring Boot Cloud Microservice CI/CD 33

34

35

36

2016 App App App 2020 App App App App 37

38

39