Haba de montaje automático por:
- Byname: El nombre del montaje automático, inspeccione el envase y el nombre de atributo de búsqueda totalmente coherente con el grano, y equipado con las propiedades automáticas
- byType: según el tipo de montaje automático, una inspección de contenedores mismo tipo de atributo del grano, será equipado automáticamente con el atributo, si hay una pluralidad de primavera haba de que la propiedad más adecuada no puede ser determinado, se produce una excepción si no se encontrado, no hubiera pasado nada.
- constructor: El montaje automático y byType configurado es similar, si no se encuentra en el recipiente es consistente con el grano de constructor tipo de parámetro, la excepción. no se recomienda
A, Byname montaje automático
bean.xml configuración Autowire = "Byname" para
<? "UTF-8"? Xml version = "1.0" encoding = ?> < Frijoles xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org / 2001 / la XMLSchema-instancia " xsi: la schemaLocation =" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd " > < bean lo anterior mencionado ID = "TextID la" clase = "Automatically.ByName.Text" Autowire = "sobrenombre" > </ bean > <! - Nota inyecta por su nombre, nombre de identificación debe coincidir con el atributo de nombre del mismo nombre -> <frijol ID = "hablar" de clase= "Automatically.ByName.Speak" > </ bean > </ frijol >
TestDao: montaje automático, simplemente escribiendo método set
público de clase TextDao { Privado del Habla TestService; pública nula por ejemplo () { System.out.println ( "el inicio del texto" ); speak.say (); } // montaje automático, escritura único método para configurar un conjunto Autowire = "sobrenombre" al público vacío setSpeak (Speak TestService) { el presente .speak = hablar; } }
Servicio de prueba:
público de clase del TestService { público nula por ejemplo () { System.out.println ( "Habla ---- ----- método se lleva a cabo por ejemplo" ); } }
TestMain: Clase de Prueba
público de clase TestMain { @test pública vacío Test () { contexto Application Context = nueva ClassPathXmlApplicationContext ( "Bean.xml" ); TextDao textDao = (TextDao) context.getBean ( "TextID" ); textDao.say (); } }
El resultado:
Dos, byType autowiring
y bean.xml similares Byname simplemente modificar la Autowire = "Byname" como la Autowire = "el byType"
TestDao con el mismo sobrenombre
TestService con el mismo sobrenombre
TestMain con el mismo sobrenombre
El resultado:
Tres, constructor de montaje automático
y bean.xml similares Byname simplemente modificar la Autowire = "Byname" como la Autowire = " constructor "
<? "UTF-8"? Xml version = "1.0" encoding = ?> < Frijoles xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org / 2001 / XMLSchema la instancia " xsi: la schemaLocation =" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd " > <! - este modo es muy similar a byType, pero se aplica a argumentos de constructor. contenedor de primavera visto como los frijoles, la propiedad Autowire de los granos en el archivo de configuración XML para el constructor. Entonces, se trata de un parámetro de perfil en su constructor partido y los cables nombres frijoles. Si se encuentra una coincidencia, se inyectará estos frijol, de lo contrario se producirá una excepción -> < frijol lo anterior mencionado ID = "La TextID"= "Automatically.AutoConstructor.TestDao" Autowire = "constructor" > </ bean > < bean ID = "TestService" clase = "Automatically.AutoConstructor.TestService" > </ bean > </ frijoles >
TestDao: y los dos no me gusta es que ningún método conjunto único constructor
público de clase TestDao { privada hablar TestService; pública TestDao (TestService Hablar) { este .speak = hablan; } Pública nula por ejemplo () { System.out.println ( "TestDao de inicio:" ); speak.say (); } }
TestService con el mismo sobrenombre
TestMain con el mismo sobrenombre
El resultado: