• 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)

    
    <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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

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

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

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

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

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

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

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

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

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

    <dependency>
        <groupId>jakarta.annotationgroupId>
        <artifactId>jakarta.annotation-apiartifactId>
        <version>2.1.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    @Repository("myUserDao")
    public class UserDaoImpl implements UserDao {
    
        @Override
        public void print() {
            System.out.println("Dao层执行结束");
        }
    }
    
    
    @Resource(name = "myUserDao")
    private UserDao myUserDao;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    全注解开发

    创建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 {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    @Test
    public void testAllAnnotation(){
        ApplicationContext context = new AnnotationConfigApplicationContext(Spring6Config.class);
        UserController userController = context.getBean("userController", UserController.class);
        userController.out();
        logger.info("执行成功");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    [项目管理-21]:技术人员向项目管理转变时的几个常见思维误区与困惑:如何管事?如何管人?
    外汇天眼:真实记录,投资者在盗版MT4平台SCE Group上做交易的经历!
    Vue3待办列表-日记与便签-LOL英雄资料-课程大作业
    重生之我是一名程序员 37
    掌握Perl并发:线程与进程编程全攻略
    Spring Cloud Alibaba系列学习文章二
    wireshark工具详解、数据包抓取分析、使用教程
    Redis持久化机制详解
    电脑桌面删除的文件回收站没有,电脑上桌面删除文件在回收站找不到怎么办
    【TVM源码学习笔记】3 模型编译
  • 原文地址:https://blog.csdn.net/anncyuyan/article/details/136200869