Spring基于注解的IOC配置
基于注解的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配置的更多相关文章
- Spring 基于注解的 IOC 配置
创建 spring 的 的 xml 配置 文件 <context:component-scan base-package="com.itheim"/> 指定创建容器时要 ...
- 10 Spring框架--基于注解的IOC配置
1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...
- spring基于注解的IoC以及IoC的案例
1.Spring中IoC的常用注解 1.1明确: (1)基于注解的配置和xml的配置要实现的功能都是一样的,都是要降低程序之间的耦合,只是配置的形式不一样 2.案例:使用xml方式和注解方式实现单表的 ...
- 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...
- 基于注解的IOC配置
1 明确 注解配置和XML配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中到底是使用XML还是注解,每家公司有着不同的习惯.具体问题具体分析. 2 环境搭建 ...
- spring的基于注解的IOC配置
1.配置文件配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: ...
- spring基于注解的IOC
曾经的XML配置: <bean id="accountService" class="com.itheima.service.impl.AccountService ...
- 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例
之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...
- 缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache
本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中 ...
- 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式
8.4.5 基于注解的“零配置”方式 AspectJ允许使用注解定义切面.切入点和增强处理,而Spring框架则可识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5 一样的 ...
随机推荐
- [阿里DIN] 模型保存,加载和使用
[阿里DIN] 模型保存,加载和使用 0x00 摘要 Deep Interest Network(DIN)是阿里妈妈精准定向检索及基础算法团队在2017年6月提出的.其针对电子商务领域(e-comme ...
- 基于deepseek模型知识库,Cherry Studio和AnythingLLM使用效果对比
基于deepseek模型知识库,Cherry Studio和AnythingLLM使用效果对比 目 录 1. 使用效果对比基础 2. Cherry Studio和Any ...
- 安川Yaskawa机器人DX100示教器维修的方法
安川Yaskawa机器人DX100示教器维修的优劣势分析 安川Yaskawa机器人示教编程,工业机器人维修,即操作人员经过安川机器人示教器,ABB机器人保养,手动操控机器人的关节运动,以使机器人运动到 ...
- 【Unity】图形渲染瓶颈与批处理优化
[Unity]图形渲染瓶颈与批处理优化 图形渲染 工作方式 显卡的工作方式并非连续的,一般分三步. 上传更新渲染数据至显存 设置显卡的渲染管线状态 启动绘制并等待绘制结果 性能瓶颈 由于显卡是大规模并 ...
- springboot+vue项目:工具箱
常用账号管理:工作相关账号.游戏账号.各平台账号 加班调休管理:公司没有对应的系统,需要自己记录加班调休情况. 待办事项:方便记录待办,以提醒还有哪些事情没有办理. 待实现功能: 1.点击侧边栏菜单, ...
- 如何构建多模态AI知识库?
转载:如何构建多模态AI知识库? 摘要 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量.其中,多模态 AI 知识库作为 AI 领域的重要创新,正引领我们迈向一个全新的智能时代.它 ...
- 全程使用 AI 从 0 到 1 写了个小工具
背景 好长时间没写技术方面的文章了,主要的原因是AI的发展实在太快太快,尤其是从去年ChatGPT的普及到今年DeepSeek的爆火,AI的世界可谓是三天一个小变化五天一个大版本,AI的能力每天都在以 ...
- springboot接入方式对接股票数据源API接口
为了创建一个Java项目来对接StockTV的API接口,我们可以使用HttpURLConnection或第三方库如OkHttp来发送HTTP请求,并使用Java-WebSocket库来处理WebSo ...
- 关于Mysql触发器的使用
当我在回复表新增数据 我就会执行下列语句 触发器在mysql的使用过DELIMITER $$开头 END; $$ 结尾,注意 触发的语句必须用:结尾 创建触发器DELIMITER $$CREATE T ...
- C# TCP/IP通信,Socket通信例子
1.服务端建立监听,等待客户端连接 class Program { static void Main(string[] args) { TcpListener listener = new TcpLi ...