Spring——Bean管理-注解方式进行属性注入

简介: 简化xml方式开发,只需要注解就可以完成在配置文件中的配置

45e2f334d70b4259aeeddb0bae0d9a21.png


Spring针对Bean管理中创建对象提供的注解有哪些?


@Component:普通


@Service:业务逻辑层


@Controller:controller层


@Repository:dao层


用注解的方式是为什么?


简化xml方式开发,只需要注解就可以完成在配置文件中的配置


42b22fdb371549bbb6a5af07d2044623.png


如何实现注解开发?


创建对象


组件扫描


package com.atguigu.spring5.ComponentScan;
import org.springframework.stereotype.Component;
/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5
 * @Author: dengLiMei
 * @CreateTime: 2023-02-04  16:56
 * @Description: TODO
 * @Version: 1.0
 */
//value可以不写,如果不写默认是类名的首字母小写
@Component(value = "user")
public class User {
    public void add() {
        System.out.println("aaaa");
    }
}


package com.atguigu.spring5.ComponentScan;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.ComponentScan
 * @Author: dengLiMei
 * @CreateTime: 2023-02-10  15:12
 * @Description: TODO
 * @Version: 1.0
 */
public class Main {
    public static void main(String[] args) {
        ApplicationContext content= new ClassPathXmlApplicationContext("beans.xml");
        User user = content.getBean("user", User.class);
        user.add();
    }
}


<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--    开启组件扫描
    如果扫描多个包,多个包使用逗号隔开
    扫描包上层目录-->
    <!--   表示: 扫描包中的所有类-->
    <context:component-scan base-package="com.atguigu.spring5">
    </context:component-scan>
    <!--    use-default-filters=“false”:表示现在不使用默认filter,自己配置filter
    context:include-filter,设置扫描哪些内容-->
    <!--    表示:  只扫描注解带Controller的类-->
    <context:component-scan base-package="com.atguigu.spring5" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <!--    下面配置扫描包所有内容
    context:include-filter,设置扫描哪些内容-->
    <!--    表示:  除了Controller其余类都扫描-->
    <context:component-scan base-package="com.atguigu.spring5">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>-filter
        type="" expression=""/>
    </context:component-scan>
</beans>


属性注入


@Autowired:根据类型注入


@Qualifier:根据名称进行注入,和Autowired


@Resource:可以根据类型或名称注入


@Value:普通属性注入


javax:java扩展包


完全注解开发


Configuration:作为配置类,替代xml配置文件


3825241caefe46628b760ef9d222d735.png


package com.atguigu.spring5.SpringConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
@Configuration
@ComponentScan(basePackages = {"com.atguigu.spring5"})
public class SpringConfigure {
}


package com.atguigu.spring5.ScopeTest;
import org.springframework.stereotype.Component;
/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.Book
 * @Author: dengLiMei
 * @CreateTime: 2023-02-08  19:28
 * @Description: TODO
 * @Version: 1.0
 */
@Component
public class Book {
    private String bname;
    private String bauthor;
    public void setBname(String bname) {
        this.bname = bname;
    }
    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }
    public static void main(String[] args) {
        Book book = new Book();
        book.setBname("abc");
    }
    public void testDemo() {
        System.out.println(bname + "---" + "aaa");
    }
}


package com.atguigu.spring5.SpringConfiguration;
import com.atguigu.spring5.ScopeTest.Book;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.SpringConfiguration
 * @Author: dengLiMei
 * @CreateTime: 2023-02-11  09:38
 * @Description: TODO
 * @Version: 1.0
 */
public class Main {
    public static void main(String[] args) {
//        加载配置类
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfigure.class);
//        创建实例
        Book book = context.getBean("book", Book.class);
//        调用方法
        book.testDemo();
    }
}


输出结果:


0b849ea69ac046ed9685ed26ed342307.png



Spring系列文章:


Spring——是什么?作用?内容?用到的设计模式?


Spring——Bean管理-xml方式进行属性注入


Spring——Bean管理-注解方式进行属性注入


Spring——什么是IOC?


Spring——AOP是什么?如何使用?


Spring——什么是事务?传播行为?事务隔离级别有哪些?


Spring——整合junit4、junit5使用方法


如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏脚印支持一下博主~

相关文章
|
11天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
137 73
|
6天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
40 21
|
11天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
11天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
11天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
17天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
53 6
|
Java Spring 容器
Spring 源码解析 | populateBean 属性填充(上)
本文主要是讲 Spring 容器的启动过程主要是以题干的方式进行可能不回涉及过多的细节,希望大家阅读本文能对 Spring 源码有一个简单的了解。 环境介绍: Spring 5.3.10 Jdk 11
233 0
Spring 源码解析 | populateBean 属性填充(上)
|
Java Spring 容器
Spring 源码解析 | populateBean 属性填充(下)
本文主要是讲 Spring 容器的启动过程主要是以题干的方式进行可能不回涉及过多的细节,希望大家阅读本文能对 Spring 源码有一个简单的了解。 环境介绍: Spring 5.3.10 Jdk 11
184 0
|
Java 数据库连接 Spring
Spring 属性填充(下)
Spring 的属性填充主要是在 Bean 被创建后,通过 populateBean 方法来完成对象属性赋值以逐步完成 Bean 的初始化工作。
210 0
|
Java Spring
Spring 属性填充(上)
Spring 的属性填充主要是在 Bean 被创建后,通过 populateBean 方法来完成对象属性赋值以逐步完成 Bean 的初始化工作。
163 0