注解开发总结

目录

  • 注解开发定义bean
  • 纯注解开发
  • bean作用范围与生命周期
  • 依赖注入——自动装配
  • 第三方 bean
    • 第三方 bean 管理
    • 第三方 bean 依赖注入
  • XML配置比对注解配置

注解开发定义bean

  • 使用 @Component 定义 bean , 括号里面可以认为是 id
@Component("bookDao")
public class BookDaoImpl implements BookDao {}@Component
publuc class BookServiceImpl implements BookServicw {}
  • 核心配置文件中通过组件扫描加载 bean
<context:component-scan base-package="com.itheima">
  • Spring 提供 @Component 注解的三个衍生注解
    • @Controller : 用于表现层 bean 定义
    • @Service : 用于业务层 bean 定义
    • @Repository : 用于数据层 bean 定义
  • 总结:定义 bean
    • @Component
      • @Controller
      • @Service
      • @Repository
    • <context:component-scan/>

纯注解开发

  • Spring3.0 升级了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道。

  • Java 类代替 Spring 核心配置文件

@Configuration
@ComponentScan("com.itheima")
public class SpringConfig {
}
  • @Configuration 注解用于设定当前类为配置类
  • @ComponentScan 注解用于设定扫描路径,此注解只能添加一次,多个数据请求数组格式
@ComponentScan({"com.itheima.service", "com.itheima.dao"})
  • 读取Spring 核心配置文件初始化容器对象切换为读取 Java 配置类初始化容器对象
// 加载配置文件初始化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 加载配置类初始化容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
  • 总结:纯注解开发
    • @Configuration
    • @ComponentScan
    • AnnotationConfigApplicationContext

bean作用范围与生命周期

  • 使用 @Scope 定义 bean 作用范围
  • 使用 @PostConstruct 、 @PreDestroy 定义 bean 生命周期
@Repository
@Scope("singleton")  
public class BookDaoImpl implements BookDao {public void save() {System.out.println("book dao save ...");}//@PostConstruct设置bean的初始化方法@PostConstructpublic void init() {System.out.println("init ...");}//@PreDestroy设置bean的销毁方法@PreDestroypublic void destroy() {System.out.println("destroy ...");}
}

依赖注入——自动装配

  • 使用 @Autowired 注解开启自动装配模式(按类型)
@Service 
public class BookServiceImpl implements BookService {@Autowiredprivate BookDao bookDao;public void save() {sout("...")};
}
  • 注意: 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供 setter 方法。
  • 注意: 自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法。
  • 使用 @Qualifier 注解开启指定名称装配 bean
@Service 
public class BookServiceImpl implements BookService {@Autowired@Qualifier("bookDao")private BookDao bookDao;
}
  • 注意: @Qualifier注解无法单独使用,必须配合 @Autowired 注解使用

  • 使用 @Value 实现简单类型注入

@Value("100")

但是要加载 properties 文件时,应该这样做:

@Configuration
@ComponentScan("com.itheima")
//@PropertySource加载properties配置文件
@PropertySource({"classpath:jdbc.properties"})
public class SpringConfig {
}

注意: 路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符 *

第三方 bean

第三方 bean 管理

  • 使用独立的配置类管理第三方 bean
public class JdbcConfig {@Beanpublic DataSource dataSource(BookDao bookDao){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName("com.mysql.jdbc.Driver");ds.setUrl("jdbc:mysql://localhost:3306/spring_db");ds.setUsername("root");ds.setPassword("root");return ds;}
}
  • 将独立的配置类加入核心配置
  • 方式一:导入式 使用 @Import 注解手动加入配置类到核心配置,此注解只能添加一次,多个数据用数组格式
@Configuration
@ComponentScan("com.itheima")
//@Import:导入配置信息
@Import({JdbcConfig.class})
public class SpringConfig {
}
  • 方式二:扫描式 不推荐使用

第三方 bean 依赖注入

  • 简单类型注入和引用类型注入
  • 简单类型注入:成员变量
  • 引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象
public class JdbcConfig {//1.定义一个方法获得要管理的对象@Value("com.mysql.jdbc.Driver")private String driver;@Value("jdbc:mysql://localhost:3306/spring_db")private String url;@Value("root")private String userName;@Value("root")private String password;//2.添加@Bean,表示当前方法的返回值是一个bean//@Bean修饰的方法,形参根据类型自动装配@Beanpublic DataSource dataSource(BookDao bookDao){System.out.println(bookDao);DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}

XML配置比对注解配置

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808036.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB环境下基于图像处理的视网膜图像血管分割

预防糖尿病对每个人的健康至关重要&#xff0c;而糖尿病的早期症状在眼底视网膜血管会有所体现&#xff0c;如静脉血管扩张、轻度弯曲等。高血压作为常见疾病&#xff0c;在中国有多达2.45亿的患者。高血压的病情也会在眼底视网膜血管上有所体现&#xff0c;如交叉压迫征等反映…

Spring篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、区分构造函数注入和 setter 注入二、spring 中有多少种 IOC 容器?三、区分 BeanFactory 和 ApplicationContext。四、列举 IoC 的一些好处。前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大…

Stable Diffusion 3重磅发布

刚不久&#xff0c;Stability AI发布了Stable Diffusion 3.0&#xff0c;这一版本采用了与备受瞩目的爆火Sora相同的DiT架构。通过这一更新&#xff0c;画面质量、文字渲染以及对复杂对象的理解能力都得到了显著提升。由于这些改进&#xff0c;先前的技术Midjourney和DALL-E 3在…

金融知识分享系列之:五日线

金融知识分享系列之&#xff1a;五日线 一、股票均线二、五日线三、五日线加量能三、五日线案例四、五日线案例五、五日线案例六、五日线案例七、五日线案例八、五日线案例 一、股票均线 股票均线是一种用于平滑股票价格的指标。它是根据一段时间内的股票价格计算得出的平均值…

定时任务处理-Spring Task

目录 1 前言 2 cron表达式 2.1 相关概念的介绍 2.2 举个例子(白雪警告) 2.3 使用网站自动生成 3 Spring Task的使用 3.1 导入依赖坐标 3.2 开启任务调度 3.3 自定义定时任务类 1 前言 当我们需要处理一些定时任务的时候就需要用到我们的Spring Task&#xff0c;接下来…

使用命令符用cd切换不了

bug:cd 切换不进去 解决办法&#xff1a; 在cd后面加 /d

林浩然与杨凌芸的Scala奇遇记:从Java王国到函数式编程乐园

林浩然与杨凌芸的Scala奇遇记&#xff1a;从Java王国到函数式编程乐园 在那个代码编织而成的世界里&#xff0c;我们的主人公林浩然和杨凌芸&#xff0c;两位Java领域的编程高手&#xff0c;正在寻找新的挑战。他们曾一起探索过Java丛林中的Lambda表达式的奥秘&#xff0c;也曾…

化学分子Mol2文件格式与使用注意事项

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、Mol2文件示例二、 Mol2文件主要结构解释及注意事项MOLECULE 字段解释ATOM 字段解释BOND 字段解释SUBSTRUCTURE字段解释 总结参考资料 前言 Mol2格式文件是一个ASCII 文件&#xff0c;由Tripos…

Carla自动驾驶仿真七:CARLASUMO真实世界交通流仿真

文章目录 一、SUMO&CARLA背景二、OpenSteerMap使用三、OSM TO XODR四、CARLA加载XODR五、CARLA工程修改六、开始联合仿真七、仿真结束 一、SUMO&CARLA背景 SUMO (Simulation of Urban MObility) 是一个开源的交通模拟软件包&#xff0c;被广泛用于模拟城市交通系统&am…

26.java-单元测试xml注解

单元测试&xml&注解 单元测试 单元测试就是针对最小的功能单元编写测试代码&#xff0c;Java程序最小的功能单元是方法&#xff0c;因此&#xff0c;单元测试就是针对 Java 方法的测试&#xff0c;进而检查方法的正确性。 简单理解 : 就是一个测试代码的工具 目前测试…

栈和堆什么意思,Rust所有权机制又是什么

栈和堆什么意思 栈&#xff1a;存储基本数据类型和引用数据类型的指针引用(地址)&#xff0c;基本数据类型占据固定大小的内存空间。 堆&#xff1a;存储引用数据类型的值&#xff0c;引用数据类型包括对象&#xff0c;数组和函数&#xff0c;在堆中&#xff0c;引用数据类型…

Linux实验记录:使用PXE+Kickstart无人值守安装服务

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 实际生产中安装操作系统的工作&…

AI:134-基于深度学习的社交媒体图像内容分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Apache celeborn 安装及使用教程

1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…

阿里巴巴Java开发手册解读-黄山版1.7.1

《Java 开发手册》是 Java 社区爱好者的集体智慧结晶和经验总结&#xff0c;经历了多次大规模一线实战的检验及不断完善&#xff0c;整理成册后&#xff0c;众多社区开发者踊跃参与打磨完善&#xff0c;系统化地整理成册&#xff0c;当前的最新版本是黄山版。现代软件行业的高速…

创建vue3项目(基础)

首先打开自己的目录文件输入指令cmd 出现命令行工具 输入指令vue create 项目名称 按回车 选择第三个自己配置 根据需求选择 回车 选择自己需要的版本 出现这个 一直按回车大约5下或者6下 创建完毕 结束 感谢观看

音视频数字化(数字与模拟-电影)

针对电视屏幕,电影被称为“大荧幕”,也是娱乐行业的顶尖产业。作为一项综合艺术,从被发明至今,近200年的发展史中,无人可以替代,并始终走在时代的前列。 电影回放的原理就是“视觉残留”,也就是快速移过眼前的画面,会在人的大脑中残留短暂的时间,随着画面不断地移过,…

大学生课程|统计基础与python分析3|实战:不同行业工龄与薪水的线性回归模型(免费下载所有课程材料)

此系列为基础学习系列&#xff0c;请自行学习&#xff0c;课程资源免费获取地址&#xff1a; https://download.csdn.net/download/weixin_68126662/88866689 目录 此系列为基础学习系列&#xff0c;请自行学习 1.读取数据 2.绘制离散点图 3.模型搭建 4.模型可视化 5.线…

opencv绘制基本图形,在图片上添加文字

文章目录 1.opencv绘制基本图形1. 画直线&#xff0c; cv2.line( )2. 画长方形&#xff0c;cv2.rectangle( )3. 画圆型&#xff0c;cv2.circle( )4. 画折线&#xff0c;cv2.polylines( ) 2.图片上显示文字 本章主要阐述利用opencv绘制一些常见的图形方法和技巧&#xff0c;以及…

解锁苏宁电商数据新纪元:关键字搜索API接口引领业务升级

苏宁关键字搜索API接口&#xff1a;电商数据探索的新篇章 一、引言 在电商领域&#xff0c;数据的重要性不言而喻。为了帮助开发者更高效地获取和利用电商数据&#xff0c;苏宁开放平台提供了关键字搜索API接口。本文将带你深入了解这一接口的技术细节&#xff0c;让你在电商…