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

การเดินสายอัตโนมัติเป็นคุณลักษณะคอนเทนเนอร์ DI ที่การอ้างอิงจะถูกค้นหาโดยอัตโนมัติตามเกณฑ์บางอย่าง

10
อะไรคือความแตกต่างระหว่าง @Inject และ @Autowired ใน Spring Framework ต้องใช้อันไหนภายใต้เงื่อนไขแบบใด
ฉันกำลังอ่านบล็อกบางอย่างใน SpringSource และในบล็อกใดบล็อกหนึ่งที่ผู้เขียนใช้งานอยู่@Injectและฉันคิดว่าเขาสามารถใช้งาน@Autowiredได้เช่นกัน นี่คือส่วนของรหัส: @Inject private CustomerOrderService customerOrderService; ฉันไม่แน่ใจเกี่ยวกับความแตกต่างระหว่าง@Injectและ@Autowiredและจะขอบคุณถ้ามีคนอธิบายความแตกต่างและสิ่งที่จะใช้ภายใต้สถานการณ์ใด

18
เหตุใดฟิลด์ @Autowired ของฉันจึงเป็นโมฆะ
หมายเหตุ: นี่มีวัตถุประสงค์เพื่อเป็นคำตอบที่ยอมรับได้สำหรับปัญหาทั่วไป ฉันมี@ServiceคลาสSpring ( MileageFeeCalculator) ที่มี@Autowiredฟิลด์ ( rateService) แต่ฟิลด์นั้นคือnullเมื่อฉันพยายามใช้ บันทึกแสดงให้เห็นว่าทั้งMileageFeeCalculatorถั่วและMileageRateServiceถั่วกำลังถูกสร้างขึ้น แต่ฉันได้รับNullPointerExceptionเมื่อใดก็ตามที่ฉันพยายามที่จะเรียกmileageChargeวิธีการในบริการถั่วของฉัน เหตุใดสปริงจึงไม่ยอมฟิลด์ ชั้นควบคุม: @Controller public class MileageFeeController { @RequestMapping("/mileage/{miles}") @ResponseBody public float mileageFee(@PathVariable int miles) { MileageFeeCalculator calc = new MileageFeeCalculator(); return calc.mileageCharge(miles); } } ระดับบริการ: @Service public class MileageFeeCalculator { @Autowired private MileageRateService rateService; // <--- should be autowired, …

11
การลงทะเบียนอัตโนมัติทำงานอย่างไรใน Spring
ฉันสับสนเล็กน้อยว่าการกลับตัวของการควบคุม ( IoC) ทำงานSpringอย่างไร สมมติว่าฉันมีคลาสบริการที่เรียกUserServiceImplว่าใช้UserServiceอินเทอร์เฟซ สิ่งนี้จะเป็น@Autowiredอย่างไร และในฉันฉันControllersจะได้instantiateรับinstanceบริการนี้อย่างไร? ฉันจะทำสิ่งต่อไปนี้หรือไม่? UserService userService = new UserServiceImpl();

14
ฤดูใบไม้ผลิ: @ ส่วนประกอบกับ @Bean
ฉันเข้าใจว่ามีการเพิ่ม@Componentคำอธิบายประกอบในฤดูใบไม้ผลิ 2.5 เพื่อกำจัดคำจำกัดความ xml bean โดยใช้การสแกนคลาสพา ธ @Beanถูกนำมาใช้ในฤดูใบไม้ผลิ 3.0 และสามารถใช้กับ@Configurationเพื่อกำจัดไฟล์ xml อย่างสมบูรณ์และใช้การกำหนดค่า Java แทน เป็นไปได้ไหมที่จะใช้@Componentคำอธิบายประกอบซ้ำแทนที่จะแนะนำ@Beanคำอธิบายประกอบ ความเข้าใจของฉันคือเป้าหมายสุดท้ายคือการสร้างถั่วในทั้งสองกรณี

11
@Resource กับ @Autowired
ซึ่งคำอธิบายประกอบ@Resource ( jsr250 ) หรือ@Autowired (ฤดูใบไม้ผลิที่เฉพาะเจาะจง) ผมควรจะใช้ในการ DI? ฉันใช้งานได้สำเร็จทั้งในอดีต@Resource(name="blah")และ@Autowired @Qualifier("blah") สัญชาตญาณของฉันคือติดกับ@Resourceแท็กเนื่องจากมันได้รับการยอมรับจากคน jsr ใครมีความคิดที่แข็งแกร่งในเรื่องนี้?

3
ทำความเข้าใจเกี่ยวกับ Spring @Autowired การใช้งาน
ฉันกำลังอ่านเอกสารอ้างอิง spring 3.0.x เพื่อทำความเข้าใจคำอธิบายประกอบของ Spring Autowired: 3.9.2 @Autowired และ @Inject ฉันไม่สามารถเข้าใจตัวอย่างด้านล่าง เราต้องทำอะไรบางอย่างใน XML เพื่อให้มันใช้งานได้ ตัวอย่าง 1 public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... } ตัวอย่าง 2 public class MovieRecommender { private MovieCatalog movieCatalog; private CustomerPreferenceDao customerPreferenceDao; @Autowired public …

9
Spring @Autowired การใช้งาน
ข้อดีและข้อเสียของการใช้@Autowiredในชั้นเรียนที่จะเชื่อมต่อกับ Spring คืออะไร เพื่อชี้แจงฉันกำลังพูดถึงเฉพาะเกี่ยวกับคำอธิบายประกอบ@Autowiredไม่ใช่สายอัตโนมัติใน XML ฉันอาจจะไม่เข้าใจ แต่สำหรับฉันมันเกือบจะดูเหมือนการต่อต้านรูปแบบ - ชั้นเรียนของคุณเริ่มตระหนักว่าพวกเขาเชื่อมโยงกับกรอบ DI แทนที่จะเป็นแค่ POJOs อาจจะเป็นคนตะกละสำหรับการลงโทษ แต่ฉันชอบที่จะมีการกำหนดค่า XML ภายนอกสำหรับถั่วและฉันชอบที่จะมีสายที่ชัดเจนดังนั้นฉันรู้ว่าสิ่งที่มีสาย
218 java  spring  autowired 

30
intellij บอกไม่ถูกต้องว่าไม่พบชนิดของถั่วสำหรับที่เก็บอัตโนมัติ
ฉันได้สร้างการทดสอบหน่วยอย่างง่าย แต่ IntelliJ เน้นสีแดงไม่ถูกต้อง ทำเครื่องหมายว่าเป็นข้อผิดพลาด ไม่มีถั่ว? ดังที่คุณเห็นด้านล่างผ่านการทดสอบหรือไม่? ดังนั้นจึงต้องเป็นแบบ Autowired?

5
Autowiring ถั่วสองตัวที่ใช้อินเทอร์เฟซเดียวกัน - วิธีตั้งค่า bean เริ่มต้นเป็น autowire อัตโนมัติอย่างไร
พื้นหลัง: ฉันมีแอปพลิเคชัน Spring 2.5 / Java / Tomcat มีถั่วต่อไปนี้ซึ่งใช้ทั่วทั้งแอปพลิเคชั่นในหลาย ๆ ที่ public class HibernateDeviceDao implements DeviceDao และถั่วต่อไปนี้ซึ่งเป็นของใหม่: public class JdbcDeviceDao implements DeviceDao bean แรกถูกกำหนดค่าให้ดังนั้น (beans ทั้งหมดในแพ็คเกจถูกรวมไว้) <context:component-scan base-package="com.initech.service.dao.hibernate" /> ถั่วที่สอง (ใหม่) ถูกกำหนดค่าแยกกัน <bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao"> <property name="dataSource" ref="jdbcDataSource"> </bean> ผลลัพธ์นี้ (แน่นอน) มีข้อยกเว้นเมื่อเริ่มต้นเซิร์ฟเวอร์: ข้อยกเว้นแบบซ้อนคือ org.springframework.beans.factory.NoSuchBeanDefinitionException: ไม่มีถั่วที่ไม่ซ้ำประเภท [com.sevenp.mobile.samplemgmt.service.dao.DeviceDao] พบถั่วที่จับคู่เดี่ยว แต่พบ 2: [deviceDao, …

4
Field Injection คืออะไรและจะหลีกเลี่ยงได้อย่างไร?
ฉันอ่านในบางโพสต์เกี่ยวกับ Spring MVC และ Portlets ว่าไม่แนะนำให้ใช้การฉีดฟิลด์ ตามที่ฉันเข้าใจแล้วการฉีดสนามคือเมื่อคุณฉีดถั่วด้วย@Autowiredสิ่งนี้: @Component public class MyComponent { @Autowired private Cart cart; } ในระหว่างการวิจัยของฉันฉันยังอ่านเกี่ยวกับการฉีดคอนสตรัคเตอร์ : @Component public class MyComponent { private final Cart cart; @Autowired public MyComponent(Cart cart){ this.cart = cart; } } ข้อดีและข้อเสียของการฉีดทั้งสองประเภทนี้คืออะไร? แก้ไข 1:เนื่องจากคำถามนี้ถูกทำเครื่องหมายว่าซ้ำกับคำถามนี้ฉันจึงตรวจสอบแล้ว สาเหตุที่ไม่มีตัวอย่างโค้ดใด ๆ ทั้งในคำถามหรือในคำตอบมันไม่ชัดเจนสำหรับฉันว่าฉันเดาถูกต้องหรือไม่ว่าฉันใช้การฉีดแบบไหน

7
ฉันจะล้อเลียนช่อง @Value แบบอัตโนมัติใน Spring ด้วย Mockito ได้อย่างไร
ฉันใช้ Spring 3.1.4 RELEASE และ Mockito 1.9.5 ในชั้นเรียน Spring ของฉันฉันมี: @Value("#{myProps['default.url']}") private String defaultUrl; @Value("#{myProps['default.password']}") private String defaultrPassword; // ... จากการทดสอบ JUnit ของฉันซึ่งฉันได้ตั้งค่าไว้ดังนี้: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:test-context.xml" }) public class MyTest { ฉันต้องการจำลองค่าสำหรับฟิลด์ "defaultUrl" ของฉัน โปรดทราบว่าฉันไม่ต้องการเยาะเย้ยค่าสำหรับช่องอื่น - ฉันต้องการคงค่าเหล่านั้นไว้ตามที่เป็นจริงเฉพาะฟิลด์ "defaultUrl" โปรดทราบว่าฉันไม่มีเมธอด "setter" ที่ชัดเจน (เช่นsetDefaultUrl) ในชั้นเรียนของฉันและฉันไม่ต้องการสร้างขึ้นเพื่อจุดประสงค์ในการทดสอบเท่านั้น ด้วยสิ่งนี้ฉันจะเยาะเย้ยค่าของฟิลด์นั้นได้อย่างไร

1
ทำความเข้าใจกับคลาส spring @Configuration
หลังจากคำถามทำความเข้าใจกับการใช้งาน Spring @Autowiredฉันต้องการสร้างฐานความรู้ที่สมบูรณ์สำหรับตัวเลือกอื่น ๆ ของการเดินสายสปริง@Configurationคลาส สมมติว่าฉันมีไฟล์ XML ฤดูใบไม้ผลิที่มีลักษณะดังนี้: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <import resource="another-application-context.xml"/> <bean id="someBean" class="stack.overflow.spring.configuration.SomeClassImpl"> <constructor-arg value="${some.interesting.property}" /> </bean> <bean id="anotherBean" class="stack.overflow.spring.configuration.AnotherClassImpl"> <constructor-arg ref="someBean"/> <constructor-arg ref="beanFromSomewhereElse"/> </bean> </beans> ฉันจะใช้@Configurationแทนได้อย่างไร? มันมีผลกับตัวโค้ดหรือไม่?

6
@ วิธีการทำงานอัตโนมัติและแบบคงที่
ฉันมี@Autowiredบริการที่ต้องใช้จากวิธีการคงที่ ฉันรู้ว่านี่ผิด แต่ฉันไม่สามารถเปลี่ยนการออกแบบปัจจุบันได้เนื่องจากต้องใช้งานมากดังนั้นฉันจึงต้องการแฮ็คง่ายๆสำหรับสิ่งนั้น ฉันไม่สามารถเปลี่ยนrandomMethod()เป็นไม่คงที่และฉันจำเป็นต้องใช้ถั่วอัตโนมัตินี้ มีเบาะแสวิธีการทำอย่างไร? @Service public class Foo { public int doStuff() { return 1; } } public class Boo { @Autowired Foo foo; public static void randomMethod() { foo.doStuff(); } }
104 java  spring  static  autowired 

4
เหตุใดเราจึงไม่สามารถกำหนดเขตข้อมูลคงที่โดยอัตโนมัติในฤดูใบไม้ผลิ
เหตุใดเราจึงไม่สามารถกำหนดตัวแปรอินสแตนซ์แบบคงที่ใน Spring bean ได้โดยอัตโนมัติ ฉันรู้ว่ามีวิธีอื่นในการบรรลุเป้าหมายนี้ แต่แค่อยากรู้ว่าทำไมเราถึงทำไม่ได้ด้วยวิธีด้านล่างนี้ เช่น @Autowired public static Test test;
98 spring  autowired 

3
@ ถั่วอัตโนมัติเป็นโมฆะเมื่ออ้างถึงในตัวสร้างของถั่วอื่น
ด้านล่างนี้เป็นตัวอย่างโค้ดที่ฉันพยายามอ้างอิง ApplicationProperties bean ของฉัน เมื่อฉันอ้างอิงจากตัวสร้างมันเป็นโมฆะ แต่เมื่ออ้างอิงจากวิธีอื่นก็ใช้ได้ จนถึงตอนนี้ฉันไม่มีปัญหาในการใช้ถั่วอัตโนมัตินี้ในคลาสอื่น ๆ แต่นี่เป็นครั้งแรกที่ฉันได้ลองใช้มันในคอนสตรัคเตอร์ของคลาสอื่น ในข้อมูลโค้ดด้านล่าง applicationProperties เป็นค่าว่างเมื่อถูกเรียกจากตัวสร้าง แต่เมื่ออ้างอิงในวิธีการแปลงจะไม่เป็นเช่นนั้น ฉันขาดอะไรไป @Component public class DocumentManager implements IDocumentManager { private Log logger = LogFactory.getLog(this.getClass()); private OfficeManager officeManager = null; private ConverterService converterService = null; @Autowired private IApplicationProperties applicationProperties; // If I try and use the Autowired applicationProperties bean …
91 java  spring  autowired 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.