Primavera basada en anotación

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

Supongo que te gusta

Origin www.cnblogs.com/709539062rao/p/12616844.html
Recomendado
Clasificación