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使用方法


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

相关文章
|
1月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
3天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
3天前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
39 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
1月前
|
XML Java 数据格式
Spring5入门到实战------5、IOC容器-Bean管理(三)
这篇文章深入探讨了Spring5框架中IOC容器的高级Bean管理,包括FactoryBean的使用、Bean作用域的设置、Bean生命周期的详细解释以及Bean后置处理器的实现和应用。
Spring5入门到实战------5、IOC容器-Bean管理(三)
|
1月前
|
XML Java 数据格式
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
这篇文章是Spring5框架的入门教程,详细讲解了IOC容器中Bean的自动装配机制,包括手动装配、`byName`和`byType`两种自动装配方式,并通过XML配置文件和Java代码示例展示了如何在Spring中实现自动装配。
Spring5入门到实战------6、IOC容器-Bean管理XML方式(自动装配)
|
1月前
|
XML Java 数据格式
Spring5入门到实战------8、IOC容器-Bean管理注解方式
这篇文章详细介绍了Spring5框架中使用注解进行Bean管理的方法,包括创建Bean的注解、自动装配和属性注入的注解,以及如何用配置类替代XML配置文件实现完全注解开发。
Spring5入门到实战------8、IOC容器-Bean管理注解方式
|
19天前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
27 0
|
19天前
|
安全 Java 开发者
开发者必看!@Resource与private final的较量,Spring Boot注入技巧大揭秘,你不可不知的细节!
【8月更文挑战第29天】Spring Boot作为热门Java框架,其依赖注入机制备受关注。本文通过对比@Resource(JSR-250规范)和@Autowired(Spring特有),并结合private final声明的字段注入,详细探讨了两者的区别与应用场景。通过示例代码展示了@Resource按名称注入及@Autowired按类型注入的特点,并分析了它们在注入时机、依赖性、线程安全性和单一职责原则方面的差异,帮助开发者根据具体需求选择最合适的注入策略。
28 0
|
26天前
|
Java Spring
|
27天前
|
前端开发 Java 开发者