基于注解的IOC配置

曾经XML的配置

<bean id="accountService" class="com.zjw.service.impl.AccountServiceImpl"
scope="" init-method="" destroy-method="">
<property name="" value="" | ref=""></property>
</bean>

注解分为用于创建对象,用于注入数据,和改变作用范围

1、用于创建对象的注解

他们的作用就和在xml配置文件中的标签实现的功能是一样的

@Component:

作用:用于把当前类对象存入spring容器中

属性

  • value:用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母小写。

@Controller :一般用在表现层

@Service :一般用在业务层

@Repository :一般用在持久层

以上三个注解他们的作用和属性与Component是一模一样

他们三个是spring框架为我们提供明确的三层使用的注解,使我们的三层对象更加清晰

2、用于注入数据的

他们的作用就和在xml配置文件中的bean标签中写一个property标签的作用是一样的

@Autowired:

作用:自动按照类型注入。只要容器中有唯一的bean对象类型和要注入的变量类型匹配,就可以注入成功.

  • 如果ICO容器中没有任何bean的类型和要注入的变量类型匹配,则报错。
  • 如果有两个以上类型,按照变量名称注入。
  • 如果查询的结果为空,那么会抛出异常。解决方法时,使用required=false

出现位置

  • 可以是变量上,也可以是方法上

细节

在使用注解注入时,set方法就不是必须的。

说明:spring 4.0开始就不推荐使用属性注入,改为推荐构造器注入和setter注入

https://zhuanlan.zhihu.com/p/92395282

https://www.cnblogs.com/lvdeyinBlog/p/15178226.html

@Qualifier

作用:在按照类型注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用,配合@Autowired使用。但是在给方法参数注入可以单独使用

属性

value:用于指定注入bean的id

@Resource

作用:直接按照bean的id注入。它可以单独使用

  • 如果没有指定name属性,当注解写在字段上时,默认取属性名进行按照名称查找,如果按照属性名称没有找到则按照属性类型查找。

  • 如果指定name,就只会按照名称进行装配。

  • 如果注解写在setter方法上默认取属性名进行装配。

属性

  • name:用于指定bean的id

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

另外,集合类型的注入只能通过XML来实现。

@Value

作用:用于注入基本类型和String类型的数据

属性

value:用于指定数据的值。它可以使用spring中SpEL(也就是Spring的el表达式)

SpEL的写法:$

3、用于改变作用范围的

他们的作用就和在bean标签中使用scope属性实现的功能是一样的

@Scope

作用:用于指定bean的作用范围

属性

value:指定范围的取值。常用取值:singleton、prototype,默认singleton

和生命周期相关

他们的作用就和在bean标签中使用init-method和destroy-method的作用是一样的

@PreDestroy

作用:用于指定销毁方法

@PostConstruct

作用:用于指定初始化方法

示例

package com.zjw.service.impl;

import com.zjw.dao.IAccountDao;
import com.zjw.service.IAccountService;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; /**
* 账户的业务层实现类
*/
@Component("accountService")
@Scope(value = "singleton") //默认也是单例
public class AccountServiceImpl implements IAccountService { // @Autowired
// private IAccountDao accountDao ; //通过构造器注入
// private final IAccountDao accountDao ; // @Autowired
// @Qualifier("accountDao1")
// private IAccountDao accountDao ; @Resource
// @Resource(name = "accountDao1")
private IAccountDao accountDao ; @Value("张三")
private String name ; @Override
public void saveAccount() {
accountDao.saveAccount();
} @PostConstruct
public void init(){
System.out.println("AccountServiceImpl……init方法执行了");
} @PreDestroy
public void destroy(){
System.out.println("AccountServiceImpl……destroy方法执行了");
} public AccountServiceImpl() {
System.out.println("AccountServiceImpl构造方法。。。。");
// this.accountDao = accountDao;
} // @Autowired //此注解可以省略
// public AccountServiceImpl(IAccountDao accountDao) {
// System.out.println("AccountServiceImpl构造方法。。。。");
// this.accountDao = accountDao;
// }
}

Spring基于注解的IOC配置的更多相关文章

  1. Spring 基于注解的 IOC 配置

    创建 spring 的 的 xml 配置 文件 <context:component-scan base-package="com.itheim"/> 指定创建容器时要 ...

  2. 10 Spring框架--基于注解的IOC配置

    1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...

  3. spring基于注解的IoC以及IoC的案例

    1.Spring中IoC的常用注解 1.1明确: (1)基于注解的配置和xml的配置要实现的功能都是一样的,都是要降低程序之间的耦合,只是配置的形式不一样 2.案例:使用xml方式和注解方式实现单表的 ...

  4. 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

    复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...

  5. 基于注解的IOC配置

    1 明确 注解配置和XML配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中到底是使用XML还是注解,每家公司有着不同的习惯.具体问题具体分析. 2 环境搭建 ...

  6. spring的基于注解的IOC配置

    1.配置文件配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: ...

  7. spring基于注解的IOC

    曾经的XML配置: <bean id="accountService" class="com.itheima.service.impl.AccountService ...

  8. 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

    之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...

  9. 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

    本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...

  10. 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式

    8.4.5 基于注解的“零配置”方式 AspectJ允许使用注解定义切面.切入点和增强处理,而Spring框架则可识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5 一样的 ...

随机推荐

  1. [阿里DIN] 从论文源码梳理深度学习几个概念

    [阿里DIN] 从论文源码梳理深度学习几个概念 目录 [阿里DIN] 从论文源码梳理深度学习几个概念 0x00 摘要 0x01 全连接层 1.1 全连接层作用 1.2 CNN 1.3 RNN 1.4 ...

  2. Q:nginx 访问报错403 forbidden

    curl 访问本地时 403 forbidden 查看nginx日志,路径为/var/log/nginx/error.log  (13: Permission denied),详细报错如下: 2021 ...

  3. .Net 配置绑定 IOptions

    准备   首先准备下appsettins.json以及目标类   appsettins.json "StudentSettings": { "Id": 1023 ...

  4. KUKA库卡机器人维修碰撞、电源、网络故障

    在进行库卡机器人的维修作业时,我们通常要遵循一系列经过精心设计和标准化的操作流程与步骤,以确保维修工作的切实有效以及机器人能够在安全的状态下运行.   针对库卡机器人维修中的故障原因分析,可以从以下几 ...

  5. 批处理脚本(.bat)实现实时监测文件夹并执行命令 [假设有新文件则拷贝到远程文件夹内]

    想到一个情景.程序实时监测文件夹情况,如果有新文件进入,分析其文件名,然后如果满足预设条件,则做相应操作.比如扫描仪扫描了文件,会将新文件保存进特定文件夹内,可以使用该程序来做处理. 在Windows ...

  6. 安卓线性布局LinearLayout

    1.weight权重解读 用法归纳: 按比例划分水平方向:将涉及到的View的android:width属性设置为0dp,然后设置为android weight属性设置比例即可. ` <Line ...

  7. jmeter 压测tcp协议

    https://www.cnblogs.com/TestSu/p/10552239.html

  8. event.stopPropagation

    先记录一下坑:     var btn = test.getElementsByTagName('label');         btn[0].active = 'active';          ...

  9. js里一些实在想不通的问题合集

    The global NaN property is a value representing Not-A-Number. --MDN NaN 是用来表示一个非数字的值得全局属性, 但是typeof之 ...

  10. Ollama系列02:快速上手搭建私有的AI对话框和智能体—chatbox版

    本文是Ollama系列教程的第2篇,在上一篇中我们介绍了Ollama的安装.大模型的下载和本地部署,本篇中我们将介绍如何将Ollama整合到chatBox中,并构建属于自己的智能体. Ollama系列 ...