Bahar - Fasulye Otomatik Kablolama
XML yapılandırma dosyasında <bean> öğesini kullanarak fasulye bildirmeyi ve <bean> öğesini <constructor-arg> ve <property> öğelerini kullanarak nasıl enjekte edeceğinizi öğrendiniz.
Yaylı konteyner autowire <constructor-arg> ve <property> öğelerini kullanmadan ortak çalışan fasulye arasındaki ilişkiler, büyük bir Spring tabanlı uygulama için yazdığınız XML yapılandırması miktarını azaltmanıza yardımcı olur.
Otomatik Kablolama Modları
Aşağıdakiler, Yaylı konteynere bağımlılık enjeksiyonu için otomatik kablolamayı kullanma talimatı vermek için kullanılabilen otomatik kablolama modlarıdır. <Bean /> öğesinin autowire özniteliğini belirtmek için kullanırsınızautowire fasulye tanımı için mod.
Sr.No | Mod ve Açıklama |
---|---|
1 | no Bu, otomatik kablolama olmadığı anlamına gelen varsayılan ayardır ve kablolama için açık fasulye referansı kullanmanız gerekir. Bu kablolama için özel yapacak hiçbir şeyiniz yok. Bu, Bağımlılık Enjeksiyonu bölümünde gördüğünüz şeydir. |
2 | isimle Mülk adına göre otomatik kablolama. Spring kapsayıcı , XML yapılandırma dosyasında autowire özniteliğinin byName olarak ayarlandığı fasulye özelliklerine bakar . Ardından, özelliklerini yapılandırma dosyasında aynı adlarla tanımlanan fasulye ile eşleştirmeye ve bağlamayı dener. |
3 | byType Mülk veri türüne göre otomatik kablolama. Spring container , XML yapılandırma dosyasında autowire niteliğinin byType olarak ayarlandığı fasulye özelliklerine bakar . Daha sonra bir özelliği eşleştirmeye ve bağlamayı dener.typeyapılandırma dosyasındaki fasulye adlarından biriyle tam olarak eşleşir. Birden fazla böyle fasulye varsa, ölümcül bir istisna atılır. |
4 | constructor Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised. |
5 | autodetect Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType. |
You can use byType or constructor autowiring mode to wire arrays and other typed-collections.
Limitations with autowiring
Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.
Sr.No. | Limitations & Description |
---|---|
1 | Overriding possibility You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring. |
2 | Primitive data types You cannot autowire so-called simple properties such as primitives, Strings, and Classes. |
3 | Confusing nature Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring. |