基于注解的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] 模型保存,加载和使用 0x00 摘要 Deep Interest Network(DIN)是阿里妈妈精准定向检索及基础算法团队在2017年6月提出的.其针对电子商务领域(e-comme ...

  2. 基于deepseek模型知识库,Cherry Studio和AnythingLLM使用效果对比

    基于deepseek模型知识库,Cherry Studio和AnythingLLM使用效果对比 目       录 1.      使用效果对比基础 2.      Cherry Studio和Any ...

  3. 安川Yaskawa机器人DX100示教器维修的方法

    安川Yaskawa机器人DX100示教器维修的优劣势分析 安川Yaskawa机器人示教编程,工业机器人维修,即操作人员经过安川机器人示教器,ABB机器人保养,手动操控机器人的关节运动,以使机器人运动到 ...

  4. 【Unity】图形渲染瓶颈与批处理优化

    [Unity]图形渲染瓶颈与批处理优化 图形渲染 工作方式 显卡的工作方式并非连续的,一般分三步. 上传更新渲染数据至显存 设置显卡的渲染管线状态 启动绘制并等待绘制结果 性能瓶颈 由于显卡是大规模并 ...

  5. springboot+vue项目:工具箱

    常用账号管理:工作相关账号.游戏账号.各平台账号 加班调休管理:公司没有对应的系统,需要自己记录加班调休情况. 待办事项:方便记录待办,以提醒还有哪些事情没有办理. 待实现功能: 1.点击侧边栏菜单, ...

  6. 如何构建多模态AI知识库?

    转载:如何构建多模态AI知识库? 摘要 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量.其中,多模态 AI 知识库作为 AI 领域的重要创新,正引领我们迈向一个全新的智能时代.它 ...

  7. 全程使用 AI 从 0 到 1 写了个小工具

    背景 好长时间没写技术方面的文章了,主要的原因是AI的发展实在太快太快,尤其是从去年ChatGPT的普及到今年DeepSeek的爆火,AI的世界可谓是三天一个小变化五天一个大版本,AI的能力每天都在以 ...

  8. springboot接入方式对接股票数据源API接口

    为了创建一个Java项目来对接StockTV的API接口,我们可以使用HttpURLConnection或第三方库如OkHttp来发送HTTP请求,并使用Java-WebSocket库来处理WebSo ...

  9. 关于Mysql触发器的使用

    当我在回复表新增数据 我就会执行下列语句 触发器在mysql的使用过DELIMITER $$开头 END; $$ 结尾,注意 触发的语句必须用:结尾 创建触发器DELIMITER $$CREATE T ...

  10. C# TCP/IP通信,Socket通信例子

    1.服务端建立监听,等待客户端连接 class Program { static void Main(string[] args) { TcpListener listener = new TcpLi ...