GWT.create(Class‹?›) กับ GIN?

ดูเหมือนว่า GWT จะมีกลไก DI แบบอบในตัวของตัวเอง (GWT.create(Class<?>)) GIN มีประโยชน์อะไรบ้างนอกเหนือจากนี้? คุณควรใช้สิ่งเหล่านี้ร่วมกันหรือแยกจากกันหรือไม่? ฉันชอบ Guice ดังนั้นฉันจึงอยากใช้ GIN แต่ไม่อยากแนะนำถ้า GWT ทำสิ่งเดียวกันทันทีตั้งแต่แกะกล่อง


person Bantha Fodder    schedule 23.10.2012    source แหล่งที่มา


คำตอบ (2)


Gin และ GWT.create มีความแตกต่างเล็กน้อย - Gin ให้ความสำคัญกับการให้การขึ้นต่อกันผ่านคำอธิบายประกอบ @Inject มากกว่า ไม่ว่าจะเป็นบนฟิลด์ ตัวตั้งค่า หรือตัวสร้าง ในขณะที่ GWT.create เน้นเกี่ยวกับการนำไปใช้งานโดยเฉพาะ Gin จะใช้คอนสตรัคเตอร์ใดๆ ที่คุณระบุ แต่คุณต้องระบุประเภทการแทนที่โดยเฉพาะ ในขณะที่ GWT.create จะใช้ได้กับคอนสตรัคเตอร์เริ่มต้นเท่านั้น และ 'กฎการย้อนกลับ' ของคุณไม่จำเป็นต้องแม่นยำมากนัก และอาจทำให้คลาสใหม่ด้วย ถูกสร้างขึ้นในเวลารวบรวม นอกจากนี้ยังสามารถดูสภาพแวดล้อมที่ผู้ใช้ใช้งานอยู่ และเลือกชุดกฎเฉพาะตามนั้น ซึ่ง Gin ไม่สามารถทำได้

Gin ใช้ GWT.create เพื่อรับคุณสมบัติอื่นๆ เหล่านี้จริงๆ หากคุณไม่มีกฎที่กำหนดไว้ Gin จะเรียก GWT.create โดยอัตโนมัติ ซึ่งหมายความว่าถ้าคุณมีกฎเช่น

@Inject MyRemoteServiceAsync rpcService;

Gin จะโทร GWT.create เพื่อสร้างการโทร rpc นั้น นอกจากนี้ยังใช้ได้กับ UiBinder, Editor Drivers, ข้อความ I18n และค่าคงที่ ฯลฯ

หากคุณเข้าใจและชอบ Guice อยู่แล้ว Gin ก็ไม่ควรเป็นก้าวสำคัญสำหรับคุณ และคุณยังคงสามารถเรียกใช้ GWT.create ได้โดยตรง หรือขอให้ Gin ดำเนินการโดยปริยาย ในความเป็นจริง เพื่อที่จะใช้งาน Gin คุณต้องโทร GWT.create(MyGinjector.class) เพื่อเริ่มเล่น

person Colin Alworth    schedule 23.10.2012

GWT.create() ไม่เกี่ยวข้องกับการฉีดการพึ่งพา มันเป็นวิธี โรงงาน

ข้อแตกต่างระหว่าง GWT.create(SomeThing.class) และ new SomeThing() เพียงอย่างเดียวคือสามารถแทนที่หรือสร้างคลาส SomeThing ที่แน่นอนได้โดยใช้สิ่งที่เรียกว่า การผูกมัดที่เลื่อนออกไป แต่ไม่มีอะไรใน GWT.create() เกี่ยวกับการจัดเตรียมการอ้างอิงให้กับวัตถุ GWT.create()d เป็นต้น

person Thomas Broyer    schedule 23.10.2012