当前位置: 首页 > news >正文

spring 注解

@Component

作用

@Component注解的作用相当于 <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/> 即:使用@Component后就不需要在xml中手动配置bean标签来实例化类了,但需要配合 <context:component-scan base-package="org.example"/> 标签使用

使用

 案例

补充:xml中配置context空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="org.example"/>
</beans>

@Component注解的三个衍生注解

  • @Controller:用于表现层bean定义
  • @Service:用于业务层bean定义
  • @Repository:用于数据层bean定义
     

案例

Spring 纯注解开发

作用

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

使用

1.使用Java类代替Spring核心配置文件

2.使用@Configuration与@ComponentScan标签代替xml配置文件

3.读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

 

说明:

@Configuration注解用于设定当前类为配置类
@Componentscan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

案例

Spring纯注解下的bean作用域及生命周期

@Scope作用域

默认bean是单例模式,使用@Scope注解可控制单例非单例模式

  • singleton 单例 默认
  • prototype 非单例
package org.example.dao.impl;import org.example.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;@Repository
@Scope("prototype")
public class BookDaoImpl implements BookDao {public void save() {System.out.println("BookDaoImpl save");}
}

生命周期

  • @PostConstrct bean执行构造方法前
  • @RreDestroy bean销毁前

 案例

package org.example.dao.impl;import org.example.dao.BookDao;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstrct;
import javax.annotation.RreDestroy;@Repository
public class BookDaoImpl implements BookDao {public void save() {System.out.println("BookDaoImpl save");}@PostConstrctpublic void init() {System.out.println("BookDaoImpl init");}@RreDestroypublic void destroy() {System.out.println("BookDaoImpl destroy");}
}

Sping 纯注解模式下的 自动装配(注入)

@Autowired

作用:相当于<property name="bookDao" ref="bookDao"/> 

注意:

  • 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
  • 自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
  • Autowired支持引用类型注入,值类型注入需要使用Value
     

案例

 

@Qualifier

案例

@Value

作用:相当于<property name="bookDao" value="《java入门》"/> 

 @PropertySource

@Value + @PropertySource 注入配置文件中的值

 


http://www.mrgr.cn/news/49621.html

相关文章:

  • manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)
  • Git上传命令汇总
  • 基于springboot Vue3的两种图形验证码工具——vue3-puzzle-vcode纯前端防人机图形滑动验证码和kaptcha图片文字验证码
  • 查找和最小的 K 对数字
  • JavaScript中WeakMap研究_WeakMap基本介绍_WeakMap()构造函数_实例方法:delete、get、has、set
  • 数据结构:用栈实现队列(OJ232)
  • 原码、反码、补码、位运算
  • HDLBits中文版,标准参考答案 | 3.2.5 Finite State Machines | 有限状态机(5)
  • RTOS实时系统-互斥锁如何保确保同一时间只有一个任务可以访问该资源
  • linux系统账号安全应该如何设置
  • 【ShuQiHere】使用域名代替 IP 地址进行 SSH 连接的完整指南*
  • 【数据结构】:破译排序算法--数字世界的秩序密码(一)
  • 常见几大排序算法
  • 从物理到人工智能:诺贝尔物理学奖开启新纪元
  • 英语变化的总结
  • 如何构建高效的公路工程资料管理系统?
  • 【JVM】内存模型
  • 基于SSM框架学籍管理系统的设计与实现
  • Xilinx远程固件升级(二)——STARTUPE2原语的使用
  • AI开发-三方库-Hugging Face-Tokenizer