IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> [Spring] Spring注解简化开发 -> 正文阅读

[Java知识库][Spring] Spring注解简化开发

??个人主页:沫洺的主页

?📚📚系列专栏:?📖?JavaWeb专栏📖?JavaSE专栏 📖?Java基础专栏📖vue3专栏?

? ? ? ? ? ? ? ? ? ? ? ? ? ?📖MyBatis专栏

💖💖如果文章对你有所帮助请留下三连??

🥏初始环境搭建

🎈applicationContext.xml配置bean?

🎈获取bean

🥏注解开发bean定义

🎫使用@Component定义bean,代替xml配置bean

@Component("bookDao")
public class BookDaoImpl implements BookDao {
}
@Component
public class BookServiceImpl implements BookService {
}

🎫核心配置文件中通过组件扫描加载bean

<context:component-scan base-package="com.moming"/>

🎫Spring提供@Component注解的三个衍生注解(作用是一模一样,只是起到见名知意的意思)

  • 🎈@Controller:用于表现层bean定义
  • 🎈@Service:用于业务层bean定义
  • 🎈@Repository:用于数据层bean定义
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
}
@Service
public class BookServiceImpl implements BookService {
}

纯注解开发

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

🎈@Configuration//注解用于设定当前类为配置类

@Configuration

🎈代替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">
</beans>

🎈@ComponentScan("com.moming")//注解用于设定扫描路径,

🎈代替xml设定扫描路径

<context:component-scan base-package="com.moming"/>

🎈此注解只能添加一次,多个数据使用数组,如

@ComponentScan({"com.moming.service","com.moming.dao"})

注意

  • 🎈加载XML配置文件初始化容器

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

  • 🎈加载配置类初始化容器

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);

🥏bean管理

🎫bean作用范围(单例,多例),单例(容器只创建一次),多例(每调用一次就创建一次)

🎈使用@Scope定义bean作用范围

🎫bean生命周期

🎈使用@PostConstruct@PreDestroy定义bean生命周期

🥏依赖注入

🎫自动装配@Autowired,按照类型装配,底层使用反射里的暴力反射

🎫注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法

🎫注意:自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法

🎫如果有两个相同类型的实现类,那么单单使用@Autowired去按照类型装配就会报错如下图所示

所以就要使用按照名称进行装配

🎫使用@Qualifier注解开启指定名称装配bean

🎫注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用

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

?🎫使用@PropertySource注解加载properties文件

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

🥏第三方bean管理

🎫第三方bean管理

🎫将独立的配置类加入核心配置

🎈方式一:导入式(推荐使用)

🎈使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式

🎈方式二:扫描式

🎈使用@ComponentScan注解扫描配置类所在的包,加载对应的配置类信息

🎫第三方bean依赖注入

🎈简单类型依赖注入

🎈引入类型依赖注入

@Bean
    public DataSource dataSource(BookDao bookDao){
        System.out.println(bookDao);
        DruidDataSource ds = new DruidDataSource();
        //属性设置
        return ds;
    }

🎈引用类型注入只需要为bean定义方法设置形参即可,容器会根据类型自动装配对象

🥏注解开发总结

🎫XML配置与注解配置比较

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:38:26  更:2022-09-30 00:39:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:23:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码