Spring6学习技术|IoC|基于注解管理bean

学习材料

尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)

IoC注解

首先这是最常用的方法。(在学Java基础的时候明明是非常不起眼的知识点啊!!!)

从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。
Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。

Spring 通过注解实现自动装配的步骤如下:1. 引入依赖 2. 开启组件扫描 3. 使用注解定义 Bean 4. 依赖注入

环境依赖和xml一样,就是spring+junit+log4j2(还有对应的配置文件转移到resource里面,这里指的是pom.xml)。
值得注意的是要开启组件扫描,且beans这个一级标签(之前都是称为头文件,哈哈哈)要进行更改(这里指的是bean.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启组件扫描功能-->
    <context:component-scan base-package="com.atguigu.spring6"></context:component-scan>
</beans>

值得注意的是,可以在设置文件中,设置排除或包含哪些文件。

1.在不同层用不同的注解

在这里插入图片描述
切记,以下的@Autowired和@Resouce都是配合以上表格的注解使用的。作用是注入。

2.@Autowired 根据类型进行装配

可标注的范围广,应用场景广。
在这里插入图片描述

这里需要注意的是,一个接口多个实现类,需要配合@Qualifier注解联合,通过名字

	@Autowired
    @Qualifier("userDaoImpl") // 指定bean的名字
    private UserDao userDao;

3.@Resource注入 根据名字进行装配

应用场景:在这里插入图片描述

是jdk自己本身的拓展包。需要引入依赖。
只用在属性和setter上,相比于Spring自己的@Autowired少了应用在构造器的部分。且寻找根据不同。

<dependency>
    <groupId>jakarta.annotation</groupId>
    <artifactId>jakarta.annotation-api</artifactId>
    <version>2.1.1</version>
</dependency>
@Repository("myUserDao")
public class UserDaoImpl implements UserDao {

    @Override
    public void print() {
        System.out.println("Dao层执行结束");
    }
}


@Resource(name = "myUserDao")
private UserDao myUserDao;

全注解开发

创建config类来替代xml配置文件。

package com.atguigu.spring6.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
//@ComponentScan({"com.atguigu.spring6.controller", "com.atguigu.spring6.service","com.atguigu.spring6.dao"})
@ComponentScan("com.atguigu.spring6")
public class Spring6Config {
}
@Test
public void testAllAnnotation(){
    ApplicationContext context = new AnnotationConfigApplicationContext(Spring6Config.class);
    UserController userController = context.getBean("userController", UserController.class);
    userController.out();
    logger.info("执行成功");
}
  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值