คำถามติดแท็ก guice

5
เอาชนะการผูกมัดใน Guice
ฉันเพิ่งเริ่มเล่นกับ Guice และกรณีใช้งานที่ฉันคิดได้ก็คือในการทดสอบฉันแค่ต้องการแทนที่การเชื่อมโยงเดียว ฉันคิดว่าฉันต้องการใช้การเชื่อมโยงระดับการผลิตที่เหลือเพื่อให้แน่ใจว่าทุกอย่างมีการตั้งค่าอย่างถูกต้องและเพื่อหลีกเลี่ยงการทำซ้ำ ลองจินตนาการว่าฉันมีโมดูลต่อไปนี้ public class ProductionModule implements Module { public void configure(Binder binder) { binder.bind(InterfaceA.class).to(ConcreteA.class); binder.bind(InterfaceB.class).to(ConcreteB.class); binder.bind(InterfaceC.class).to(ConcreteC.class); } } และในการทดสอบของฉันฉันต้องการแทนที่ InterfaceC เท่านั้นในขณะที่รักษา InterfaceA และ InterfaceB ไว้ด้วยดังนั้นฉันจึงต้องการ: Module testModule = new Module() { public void configure(Binder binder) { binder.bind(InterfaceC.class).to(MockC.class); } }; Guice.createInjector(new ProductionModule(), testModule); ฉันได้ลองทำสิ่งต่อไปนี้โดยไม่มีโชค: Module testModule = new …
138 java  unit-testing  guice 

2
เหตุใดคลาส java จึงไม่สืบทอดคำอธิบายประกอบจากอินเทอร์เฟซที่ใช้งาน
ฉันใช้ AOP ของ Guice เพื่อดักฟังการเรียกใช้วิธีการบางอย่าง ชั้นเรียนของฉันใช้อินเทอร์เฟซและฉันต้องการใส่คำอธิบายประกอบวิธีการเชื่อมต่อเพื่อให้ Guice สามารถเลือกวิธีการที่เหมาะสม แม้ว่าประเภทคำอธิบายประกอบจะถูกใส่คำอธิบายประกอบด้วยคลาสการใช้คำอธิบายประกอบที่สืบทอดมาจะไม่สืบทอดคำอธิบายประกอบตามที่ระบุไว้ในเอกสาร java ของการสืบทอด: โปรดทราบด้วยว่าคำอธิบายประกอบเมตานี้ทำให้คำอธิบายประกอบที่สืบทอดมาจากคลาสระดับสูงเท่านั้น คำอธิบายประกอบบนอินเทอร์เฟซที่ใช้งานไม่มีผล อะไรคือสาเหตุของเรื่องนี้? การทำความรู้จักกับอินเทอร์เฟซทั้งหมดที่คลาสของอ็อบเจ็กต์นำไปใช้ในรันไทม์ไม่ใช่เรื่องยากที่จะทำดังนั้นจึงต้องมีเหตุผลที่ดีอยู่เบื้องหลังการตัดสินใจนี้

6
Google Guice กับ PicoContainer สำหรับ Dependency Injection
ทีมของฉันกำลังค้นคว้าเกี่ยวกับกรอบการพึ่งพาการฉีดขึ้นรูปและกำลังพยายามตัดสินใจระหว่างการใช้ Google-Guice และ PicoContainer เรากำลังมองหาหลายสิ่งในกรอบของเรา: รอยเท้ารหัสขนาดเล็ก - สิ่งที่ฉันหมายถึงรอยเท้ารหัสขนาดเล็กคือเราไม่ต้องการให้มีการฉีดรหัสการพึ่งพาทุกที่ในฐานรหัสของเรา หากเราจำเป็นต้องปรับโครงสร้างใหม่บนท้องถนนเราต้องการให้ง่ายที่สุด ประสิทธิภาพ - แต่ละเฟรมเวิร์กมีค่าใช้จ่ายเท่าใดเมื่อสร้างและฉีดวัตถุ? ใช้งานง่าย - มีเส้นการเรียนรู้ขนาดใหญ่หรือไม่? เราต้องเขียนโค้ดเพื่อให้ทำงานง่าย ๆ หรือไม่? เราต้องการให้มีการกำหนดค่าน้อยที่สุด ขนาดชุมชน - ชุมชนที่ใหญ่ขึ้นมักจะหมายความว่าโครงการจะยังคงได้รับการดูแลต่อไป เราไม่ต้องการใช้เฟรมเวิร์กและต้องแก้ไขข้อบกพร่องของเราเอง) นอกจากนี้คำถามใด ๆ ที่เรามีระหว่างทางก็สามารถ (หวังว่า) จะได้รับคำตอบจากชุมชนผู้พัฒนา / ผู้ใช้ของเฟรมเวิร์ก การเปรียบเทียบสองกรอบกับเกณฑ์ที่ระบุไว้จะได้รับการชื่นชมอย่างมาก ประสบการณ์ส่วนตัวใด ๆ ที่ช่วยเปรียบเทียบทั้งสองอย่างก็จะเป็นประโยชน์อย่างยิ่ง ข้อจำกัดความรับผิดชอบ: ฉันค่อนข้างใหม่สำหรับการฉีดพึ่งพาดังนั้นขอโทษที่ไม่มีใครรู้ว่าฉันถามคำถามที่ไม่ตรงกับการสนทนานี้

2
จะดึงอินสแตนซ์ที่มีคำอธิบายประกอบจากหัวฉีดของ Guice ได้อย่างไร
สมมติว่าฉันมีโมดูล: Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } } และฉันต้องการทดสอบโมดูลและตรวจสอบว่ามันฉีดค่าที่ถูกต้องในStringฟิลด์ที่มีคำอธิบายประกอบNames.named("annotation")โดยไม่ต้องมีคลาสและฟิลด์ แต่ได้รับค่าโดยตรงจากหัวฉีด: @Test public void test() { Injector injector = Guice.createInjector(new Module()); // THIS IS NOT GOING TO WORK! String delirious = injector.getInstance(String.class); assertThat(delirious, IsEqual.equalTo("DELIRIOUS"); }

1
วิธีใช้ AssistedInject ของ Guice
ฉันได้อ่านhttps://github.com/google/guice/wiki/AssistedInjectแต่ไม่ได้บอกว่าจะส่งผ่านค่าอาร์กิวเมนต์ AssistedInject อย่างไร การเรียก injector.getInstance () จะมีลักษณะอย่างไร
85 java  guice  guice-3 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.