Gestión de beans de contenedor de Spring IOC basada en el método de anotación

Gestión del bean de operación IOC (basada en el método de anotación)

1. ¿Qué es un comentario?

(1) La anotación es una marca de código especial, formato: @Nombre de la anotación (nombre del atributo = valor del atributo, nombre del atributo = valor del atributo ...)

(2) Utilice anotaciones, que actúan sobre clases, métodos y atributos.

(3) Propósito de usar anotaciones: simplificar la configuración xml

2, Spring proporciona gestión de anotaciones para crear objetos Bean

Las siguientes cuatro funciones de anotación son iguales, todas se pueden utilizarCrear instancia de bean

(1) @Componente

(2) @Servicio

(3) @Controller

(4) @Repositorio

3, forma basada en anotaciones para lograr la creación del objeto

El primer paso es introducir dependencias (presentando el paquete jar spring-aop )

El segundo paso es activar el escaneo de componentes

<!--开启组件扫描
 1 如果扫描多个包,多个包使用逗号隔开
 2 扫描包上层目录
-->
<context:component-scan base-package="com.atguigu"></context:component-scan>

El tercer paso es crear una clase y agregar una anotación para crear un objeto en la clase.

//在注解里面 value 属性值可以省略不写,
//默认值是类名称,首字母小写
//UserService -- userService
@Component(value = "userService") //注解等同于XML配置文件:<bean id="userService" class=".."/>
public class UserService {
    
    
 public void add() {
    
    
 System.out.println("service add.......");
 }
}

4, detalles de la apertura del ensamblaje de escaneo de configuración

<!--示例 1
 use-default-filters="false" 表示现在不使用默认 filter,自己配置 filter
 context:include-filter ,设置扫描哪些内容
-->
<context:component-scan base-package="com.atguigu" use-defaultfilters="false">
 <context:include-filter type="annotation"

expression="org.springframework.stereotype.Controller"/><!--代表只扫描Controller注解的类-->
</context:component-scan>
<!--示例 2
 下面配置扫描包所有内容
 context:exclude-filter: 设置哪些内容不进行扫描
-->
<context:component-scan base-package="com.atguigu">
 <context:exclude-filter type="annotation"

expression="org.springframework.stereotype.Controller"/><!--表示Controller注解的类之外一切都进行扫描-->
</context:component-scan>

5, forma basada en anotacionesInyección de atributos

(1) @Autowired: Montaje automático según tipo de atributo

El primer paso es crear el servicio y los objetos dao, y agregar las anotaciones del objeto de creación a las clases de servicio y dao.

El segundo paso es inyectar el objeto dao en el servicio, agregar el atributo de tipo dao a la clase de servicio y usar anotaciones en los atributos.

@Service
public class UserService {
    
    
 //定义 dao 类型属性
 //不需要添加 set 方法
 //添加注入属性注解
 @Autowired
 private UserDao userDao;
 public void add() {
    
    
 System.out.println("service add.......");
 userDao.add();
 }
}

//Dao实现类
@Repository
//@Repository(value = "userDaoImpl1")
public class UserDaoImpl implements UserDao {
    
    
    @Override
    public void add() {
    
    
        System.out.println("dao add.....");
    }
}

(2) @Qualifier: Inyectar de acuerdo con el nombre, el uso de esta anotación @Qualifier se usa junto con @Autowired arriba

//定义 dao 类型属性
//不需要添加 set 方法
//添加注入属性注解
@Autowired //根据类型进行注入
//根据名称进行注入(目的在于区别同一接口下有多个实现类,根据类型就无法选择,从而出错!)
@Qualifier(value = "userDaoImpl1") 
private UserDao userDao;

(3) @Resource: se puede inyectar según el tipo o según el nombre (pertenece a la anotación del paquete javax y no se recomienda).

//@Resource //根据类型进行注入
@Resource(name = "userDaoImpl1") //根据名称进行注入
private UserDao userDao;

(4) @Value: inyectar atributos de tipo común

@Value(value = "abc")
private String name

6, desarrollo completamente anotado

(1) Cree una clase de configuración para reemplazar el archivo de configuración xml

@Configuration //作为配置类,替代 xml 配置文件
@ComponentScan(basePackages = {
    
    "com.atguigu"})
public class SpringConfig {
    
    
    
}

(2) Clase de prueba de escritura

@Test
public void testService2() {
    
    
 //加载配置类
 ApplicationContext context
 = new AnnotationConfigApplicationContext(SpringConfig.class);
 UserService userService = context.getBean("userService",
UserService.class);
 System.out.println(userService);
 userService.add();
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45496190/article/details/107071204
Recomendado
Clasificación