[] Primavera-arranque o uso Autowried Resouce

De este proyecto, el proyecto encontró que cargan la clase, algunos lugares utilizan @Autowired, algunos lugares utilizan @Resource

En la Internet para recopilar datos sobre la

común

     @Resource @Autowired y se puede utilizar como una propiedad de inyección modificado, cuando la clase de implementación interfaz de un solo, el mismo efecto de modificación dos anotaciones pueden ser sustituidos entre sí, no afecta.

diferentes puntos

  Java es @Resource propias anotaciones, @ de recursos tiene dos atributos son más importantes, los puntos de ese nombre y tipo; Primavera @Resource nombre de anotación se resolverán en el nombre del atributo de frijol, y el atributo tipo se resuelve con el tipo de grano. Así que si se utiliza el atributo nombre se utiliza la estrategia de inyección Byname automática, y se utiliza cuando se utiliza la estrategia de inyección automática de atributos byType tipo. Si no se asigna ni nombre de atributo de tipo, el caso estrategia de inyección automática Byname mediante el uso de la reflexión.
  @Autowired es anotaciones primavera spring2.5 versión se introduce, Autowired única inyección de acuerdo al tipo, no para que coincida con el nombre. Si se trata de la inyección de tipo no puede distinguir objetos que necesitan depender de @Qualifier o notas @Primary modificados juntos.

Escribe Liezi

Nueva clase HumanService.java

com.komiles.study.service empaquetar; 

/ * * 
 * @Author [email protected] 
 * @date 23/03/2020 11:46 
 * / 
público  interfaz HumanService { 

    / * * 
     *跑马拉松
     * @return 
     * / 
    Cadena runMarathon (); 
}

ManServiceImpl.java clase de implementación

com.komiles.study.service.impl empaquetar; 

com.komiles.study.service.HumanService importación; 
org.springframework.stereotype.Component importación; 
org.springframework.stereotype.Service importación; 

/ * * 
 * @Author [email protected] 
 * @date 03/23/2020 11:48 
 * / 
@Service 
pública  clase implementos ManServiceImpl HumanService { 

    / * * 
     *跑马拉松
     * / 
    @ Override 
    pública Cadena runMarathon () {
         retorno  " Un hombre maratón " ; 
    } 
}

nueva HumanController.java

com.komiles.study.controller empaquetar; 

com.komiles.study.service.HumanService importación; 
com.komiles.study.service.impl.ManServiceImpl importación; 
javax.annotation.Resource importación; 
org.springframework.beans.factory.annotation.Autowired importación; 
org.springframework.beans.factory.annotation.Qualifier importación; 
org.springframework.web.bind.annotation.GetMapping importación; 
org.springframework.web.bind.annotation.RequestMapping importación; 
org.springframework.web.bind.annotation.RestController importación; 

/ * * 
 * @Author [email protected] 
 * @date 23/03/2020 11:49 
 * / 
@RestController 
@RequestMapping ( " / humana " )
público  de clase HumanController { 

    @Autowired 
    privada HumanService humanService; 

    @GetMapping ( " / run " )
     pública Cadena runMarathon () 
    { 
        volver humanService.runMarathon (); 
    } 
}

Ejecutar el programa

contenido de la salida: el hombre maratón

El controlador en el @Autowired en @Resource normalmente puede acceder.

Si escribo más clases de implementación de lo que sucederá?

Crear un WomanServiceImpl.java

com.komiles.study.service.impl empaquetar; 

com.komiles.study.service.HumanService importación; 
org.springframework.context.annotation.Primary importación; 
org.springframework.stereotype.Component importación; 
org.springframework.stereotype.Service importación; 

/ * * 
 * @Author [email protected] 
 * @date 2020-03-23 12:01 
 * / 
@Service 
pública  de clase WomanServiceImpl implementos HumanService { 

    / * * 
     *跑马拉松
     * / 
    @ Override 
    pública Cadena runMarathon () {
         retorno  " Una mujer se ejecuta maratón " ; 
    } 
}

Ejecutar el programa, encontramos un error, porque hay dos clases de implementación, para encontrar que el programa no sabe

¿Cómo hacerlo?

Hay dos maneras

La primera, en la clase de implementación de la clase del nombre, el nombre en el momento de la introducción de introducción directa.

Por ejemplo: la prima en la clase ManServiceImpl.java, @ Servicio. @Service (valor = "manService") o @Component (valor = "manService")

com.komiles.study.service.impl empaquetar; 

com.komiles.study.service.HumanService importación; 
org.springframework.stereotype.Component importación; 
org.springframework.stereotype.Service importación; 

/ * * 
 * @Author [email protected] 
 * @date 2020-03-23 11:48 
 * / 
@Service (valor = " manService " )
 // @Component (value = "") manService 
pública  de clase implementos ManServiceImpl HumanService { 

    / * * 
     *跑马拉松
     * / 
    @ Override 
    pública cadena runMarathon () {
         retorno  " maratón Un hombre de ejecución "; 
    } 
}

Cuando se utiliza en la clase del controlador, sino también la necesidad de desarrollar cuáles son sus nombres.

Si utiliza @Resource necesidad de añadir @Resource (name = "manService")

Si utiliza @Autowired necesidad de utilizar @Qualifier (valor = "manService")

com.komiles.study.controller empaquetar; 

com.komiles.study.service.HumanService importación; 
com.komiles.study.service.impl.ManServiceImpl importación; 
javax.annotation.Resource importación; 
org.springframework.beans.factory.annotation.Autowired importación; 
org.springframework.beans.factory.annotation.Qualifier importación; 
org.springframework.web.bind.annotation.GetMapping importación; 
org.springframework.web.bind.annotation.RequestMapping importación; 
org.springframework.web.bind.annotation.RestController importación; 

/ * * 
 * @Author [email protected] 
 * @date 23/03/2020 11:49 
 * / 
@RestController 
@RequestMapping ( " / humana " )
público  de clase HumanController { 

    @Autowired 
    @Qualifier (valor = " manService " )
 //     @Resource (name = "manService") 

    privada HumanService humanService; 

    @GetMapping ( " / run " )
     pública Cadena runMarathon () 
    { 
        volver humanService.runMarathon (); 
    } 
}

 

Si desea hacer referencia a una clase de prioridad determinado, puede utilizar @Primary en la clase de implementación.

Código Artículo: https://github.com/KoMiles/springboot/blob/master/src/main/java/com/komiles/study/controller/HumanController.java

Supongo que te gusta

Origin www.cnblogs.com/wangkongming/p/12552065.html
Recomendado
Clasificación