En primer lugar, el formulario de comentarios se inyecta recipiente de granos COI
1.1, debe tener la clase de configuración, tales como:
@Configuration
clase pública MyConfig {
@Bean //即id = "myPig"
público Pig myPig () {
cerdo cerdo = new Pig ( "佩奇", 4 "哈士奇");
conejillo de retorno;
}
}
1,2, en la forma de un no dividido en tres componentes y tres componentes
Anotaciones tres componentes: la capa de control: @Controller
Capa de Servicio: @Service
Dao capa: @Respository tres están disponibles: @Component
Cuando el escaneo de paquete de anotación al contenedor COI: un perfil de modo :. <Contexto: base paquete de componente-scan = "XXX">
. b Notas maneras:
@Configuration @ComponentScan (valor = "servicio" ) pública clase MyConfig { @Bean // 即id = "myPig" pública cerdo myPig () { cerdo cerdo = nueva cerdo ( "佩奇", 4 "哈士奇" ); volver cerdo; } }
Notas maneras diferentes parámetros, ver el código fuente, en esta columna una demo
// controlador de exploración de este paquete, pero descartó este paquete comentario sobre @Service de @ComponentScan (valor = "controlador", excludeFilters = {@ ComponentScan.Filter (del tipo = FilterType.ANNOTATION, valor = Servicio. Clase )})
// la ejecución única StudentService esta clase, la atención debe apagar la exploración predeterminado para tener efecto
@ComponentScan (@ ComponentScan.Filter (tipo = FilterType.ASSIGNABLE_TYPE , valor = {StudentService.class})}, useDefaultFilters = false)
Non-capa de ensamblaje (por ejemplo Conversor):
1, también puede usarse @ valor de retorno de la haba +, valores predeterminados de identificación para el nombre del método ;
2, el modo de importación @
3, FactoryBean
El primer enfoque se ha demostrado al principio, y por lo tanto empezar desde @Import:
@Configuration @Import ({Curso ,. clase , CollectionType. Clase }) // ID es el nombre completo de la clase público de clase MyConfig { ... }
@Import fuente también mencionó otros dos implementaciones: {@ enlace ImportSelector}, {@} vínculo ImportBeanDefinitionRegistrar
FactoryBean:
público de clase MyFactoryBean implementos FactoryBean <profesor> { @ Override pública Maestro getObject () lanza la excepción { // método generada automáticamente TODO talón de retorno de nuevo y Maestros (); // 放入对象 } @ Override pública Clase <profesor> GetObjectType () { // generada automáticamente TODO método talón de retorno maestro. clase ; // 放入对象类型 } @ Override pública booleano isSingleton () { // el autogenerado TODO Método del trozo de retorno a la verdadera ; // determinado Singleton } } @Configuration pública clase MyConfig { @Bean // ID = nombre del método pública la FactoryBean <profesor> myFactoryBean () { volver nueva nueva MyFactoryBean (); } }
Obtener frijol por este método:
@Test pública vacío de fábrica () { Objeto Bean1 = context.getBean ( "& myFactoryBean" ); //得到MyFactoryBean Objeto Bean2 = context.getBean ( "myFactoryBean" ); //得到Maestro System.out.println (Bean1 + "\ n" + Bean2); } Config.MyFactoryBean@1a052a00 entity.Teacher@4d826d77
En segundo lugar, las notas proporcionan en forma de condiciones de inyección de la haba
2.1, Creación de clase Condición
público de clase CourseCondition los implementos Condition { @ Override pública de Boole Los partidos (contexto ConditionContext, AnnotatedTypeMetadata metadatos) { Medio Ambiente Medio Ambiente = Context.getEnvironment (); // Obtener el Medio Ambiente Cadena pigType = environment.getProperty ( "pig.type" ); SI (pigType. la contiene ( "vieja")) { // la condición de que la aplicación de cerdo clase retorno a la verdadera ; } retorno en false ; // true haba de añadirse al recipiente COI, mientras que el recipiente sin la adición de la COI } }
2.2, crear la interfaz de cerdo y clase de implementación
pública interfaz de cerdo { nula SYSO (); } Pública clase OldPig implementos de cerdo {...}
2,3, un incremento en la anotación clase de configuración @Conditional
@Configuration pública clase MyConfig { @Bean ( "oldPig") // 即id = "myPig" @Conditional (CourseCondition. Clase ) pública OldPig myPig () { OldPig cerdo = nueva OldPig ( "佩奇", 4 "哈士奇" ); volver cerdo; } }
Por último, la inyección diferente se puede lograr cambiando la configuración del entorno de la haba