多学习。

【SpringIOC】Spring基于注解的IOC配置

概叙

用于创建对象的注解

    他们的作用就和在xml配置文件中编写一个<bean>标签实现的功能是一样的
    @Component:用于把当前类对象存入spring类容器中
        属性:value——用于指定bean的id,当我们不写它的默认值是当前类名且首字母改小写
    @Controller:一般用在表现层
    @Service:一般用在业务层
    @Repository:一般用在持久层
    以上三个注解他们的作用与属性和Component是一模一样的。他们三个是Spring框架为我们提供明确的三层使用的注解,使我们的三层对象更加清晰。

配置文件

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.czy"></context:component-scan>
    

    <!--告知spring在创建容器时要扫描的包,配置所需要的标签不在beans的约束中,而是一个名称为context名称空间和约束中-->
</beans>

实体类

用于注入数据的注解(可放在变量上也可放在setter方法上)

     他们的作用就和在xml配置文件中的bean标签中写一个<property>标签的作用是一样的
     @Autowired:
                 作用:自动按照类型注入。主要容器中有唯一的一个bean对象类型和要注入的变量类型匹配(包括接口匹配),就可以匹配成功,如果IOC容器中没有任何bean的类型和要注入的变量类型匹配则报错
                       如果有多个匹配时,首先按照类型圈定出多个匹配的对象,然后根据变量名作为key,找到bean(若没有相同的则报错)。          
                 出现位置:可以是成员变量上,也可以使方法上
                 细节:不用setter,也可以注入成功

不用setter也可以注入成功的原因:通过数据类型直接去IOC容器中寻找该对象,注入到变量中

多个匹配的情况,根据变量名找对象,变量名与ioc的key相同则可以找到,否则会抛出异常

     @Qualifier:
                作用:在按照类中注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用。但是在给方法参数注入时可以。
                属性:
                      value:用于指定注入bean的id

给类成员注入要与Autowired配合

    @Resource:
                作用:直接按照bean的id注入。可以独立使用
                属性:
                      name:指定bean的id

以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现
另外,集合类型的注入只能通过xml实现。

    @Value:
                作用:用于注入基本类型和String类型的数据
                属性:
                      value:用于指定数据类型的值。它可以使用spring中SpEL(也就是spring的el表达式)
                              SpEL的写法:${表达式}

用于改变作用范围的注解

     他们的作用就和在bean标签中使用scope属性的功能是一样
      @Scope:
          作用:用于指定bean的作用范围
          属性:
                value:指定范围的取值。常用取值:singleton(单例) prototype(多例)

和生命周期相关

      他们的作用就和在bean标签中使用init-method和destroy-method是一样的
      @PreDestroy
            作用:用于指定销毁方法
      @PostConstruct
            作用:用于指定初始化方法

posted @   czyaaa  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示