spring注解配置

使用注解配置需要引入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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

</beans>

我们需要配置的就是context标签,用来告知创建容器时要扫描的包,然后spring会扫描该包和其子类包中的注解,然后创建对象
在这里插入图片描述

注解配置分为四类

1、用于创建对象的注解

@Component

该注解的作用就和再xml配置文件中的bean标签的作用时一样的,就是用于把当前类对象存入spring容器当中
查看该注解的源码发现,有一个value属性
在这里插入图片描述
该value属性用于指定bean的id,当我们不写的时候,它默认值是当前类名并且首字母小写

@Controller和@Service还有@Repository

这三个注解的作用与@Component的作用一模一样,他们三个时spring框架为我们提供明确的三层架构的使用的注解,是我们的三层对象更加清晰。@Controller注解一般用于表现层、@Service注解一般用于业务层、@Repository一般用于持久层

2、用于注入数据的

@Autowired

自动按照类型注入。只要容器中有唯一的一个bean对象和要注入的变量匹配就可以注入成功,如果ioc容器中没有任何bean的类型和要注入的变量类型匹配,则报错。使用位置可以用于变量上也可以用于方法上,并且当我们使用注解注入的时候,set方法就可以不用了

当我们使用该注解修饰成员变量,
在这里插入图片描述

如果要注入的类型在ioc容器中有重复的bean类型对象时,
第一个id为accountDao的bean对象
在这里插入图片描述
第二个id为accountDao2的bean对象
在这里插入图片描述

如果我们的变量名称和ioc容器中存放的bean类型对象的id相同的话,则注入相同的,
在这里插入图片描述

如果变量名和重复的bean类型对象的id 都不相同的话,则报错
在这里插入图片描述

当我们出现这样的编译错误的时候,引出了我们的@Qualifier注解

@Qualifier

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

示范给参数注入时
在这里插入图片描述

在这里插入图片描述
由于这样的方式,稍微有些麻烦,所以我们引入一个新的注解

@Resource

该注解可以直接按照bean的id注入,它可以独立使用,不用依托于@Autowired注解
它有一个name属性,该属性用于指定bean对象的id
在这里插入图片描述
中间出了一个小插曲,我在使用该注解的时候,发现没有该注解(一直红色)这时候我们只需要导入以下依赖就行

<dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.2</version>
</dependency>

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

@Value

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

@Scope

用于指定bean的作用范围
属性:value,指定范围的取值,常用的取值为singleton、prototype,如果不写默认为singLeton
在这里插入图片描述

@PreDestory

用于指定销毁方法
在这里插入图片描述

@PostConstruct

用于指定初始化方法
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值