Spring框架重要知识点总结(二)

Spring @Qualifier注解 @Qualifier作用是在自动按照类型注入的基础上,再按照bean的ID注入,在给类成员注入时,它不能够独立使用,需要配合@Autowired来使用,其中value属性用于指定bean的ID。 @Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在... 阅读详情

一、常用注解

在这里插入图片描述
代码详解

// 默认当前类名就是ID名称,首字母小写
@Component(value = "c")
// @Controller
// @Service(value = "c")
// @Repository(value = "c")
// @Scope(value = "singleton")     // 默认值,单例的
// @Scope(value = "prototype")         // 多例的
public class Car {
    // 注解注入值,属性set方法是可以省略不写的。
    // 只有一个属性,属性的名称是value,value是可以省略不写的
    @Value("大奔2")
    private String cname;
    @Value(value = "400000")
    private Double money;
    // 也不用提供set方法
    // 按类型自动装配的注解,和id名称没有关系
    @Autowired
    // 按id的名称注入,Qualifier不能单独使用,需要Autowired一起使用。
    // @Qualifier(value = "person")
    // @Resource Java提供的注解,按名称注入对象,属性名称是name
    // @Resource(name = "person")
    private Person person;
    /**
     * Car对象创建完成后,调用init方法进行初始化操作
     */
    @PostConstruct
    public void init(){
        System.out.println("操作...");
    }

二、纯注解

纯注解的方式是微服务架构开发的主要方式,所以也是非常的重要。纯注解的目的是替换掉所有的配置文件。但是需要编写配置类。
(一)编写实体类

@Component
public class Order {
    @Value("北京")
    private String address;
    @Override
    public String toString() {
        return "Order{" +
                "address='" + address + '\'' +
                '}';
    }}

(二)编写配置类,替换掉applicationContext.xml配置文件

// 声明当前类是配置类
@Configuration
// 扫描指定的包结构
@ComponentScan(value = "cn.tx.demo4")
public class SpringConfig {

}

(三)测试方法

public class Demo4 {
    /**
     * 编写程序,需要加载配置类
     */
    @Test
    public void run1(){
        // 创建工厂,加载配置类
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
        // 获取到对象
        Order order = (Order) ac.getBean("order");
        System.out.println(order);
    }
}

(四)常用注解总结

@Configuration 声明是配置类

@ComponentScan 扫描具体包结构的

@Import注解 Spring的配置文件可以分成多个配置的,编写多个配置类。用于导入其他配置类

@Bean注解 只能写在方法上,表明使用此方法创建一个对象,对象创建完成保存到IOC容器中

// 声明当前类是配置类
@Configuration
// 扫描指定的包结构
@ComponentScan(value = "cn.tx.demo4")
// @ComponentScan(value = {"cn.tx.demo4","cn.tx.demo3"})
// 引入新的配置类
@Import(value = {SpringConfig2.class})
public class SpringConfig {
    / * 创建连接池对象,返回对象,把该方法创建后的对象存入到连接池中,使用@Bean注解解决
         <!--配置连接池对象-->
         <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
             <property name="driverClassName" value="com.mysql.jdbc.Driver" />
             <property name="url" value="jdbc:mysql:///spring_db" />
             <property name="username" value="root" />
             <property name="password" value="root" />
         </bean>
     *
     * @return
     */
    @Bean(name="dataSource")
    public DataSource createDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///spring_db");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    }}

二、Spring框架整合JUnit单元测试

每次进行单元测试的时候,都需要编写创建工厂,加载配置文件等代码,比较繁琐。Spring提供了整合Junit单元测试的技术,可以简化测试开发,下面我们来学习一下。

(一)首先既然要进行Junit单元测试,则需要jar包,在导入spring-test的坐标依赖。

(二)配置文件+注解方式

①编写类和方法,把该类交给IOC容器进行管理

public class User {
    public void sayHello(){
        System.out.println("Hello....");
    }}

②编写配置文件applicationContext.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"
       xsi:schemaLocation="
                    http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--整合单元测试-->
    <bean id="user" class="cn.tx.demo5.User"/>
</beans>

③编写测试代码

@RunWith(value = SpringJUnit4ClassRunner.class)     // 运行单元测试
@ContextConfiguration(value = "classpath:applicationContext.xml")   // 加载类路径下的配置文件
public class Demo5 {
    // 测试哪一个对象,把该对象注入进来,在测试环境下,可以使用注解的方式注入测试的对象
    // 按类型自动注入
    @Autowired
    private User user;

    @Test
    public void run1(){
        // 创建工厂,加载配置文件......
        // 调用对象的方法
        user.sayHello();
    }
}

(三)纯注解方式

①在(二)的基础上,将配置文件换成配置类

②在测试类中,加载类路径下的配置文件,改为记载配置类@ContextConfiguration(classes=配置类名.class)

欢迎各位大佬,评论指出不足。
下一节 Spring框架重要知识点总结(三).

Spring 框架核心知识点总结与实战指南 Spring 作为 Java 企业级开发的主流框架,凭借其强大的功能和灵活的架构,已成为众多开发者的首选。本文将全面总结 Spring 框架的核心知识点,结合实战案例深入讲解各模块的使用方法,并分享一些最佳实践经验,帮助读者系统掌握 Spring 技术栈。Spring 是一个轻量级的 Java 企业级开发框架,旨在简化企业应用开发的复杂性。IoC(控制反转):将对象的创建和依赖关系管理从代码转移到容器AOP(面向切面编程):实现横切关注点的模块化统一的编程模型:提供一致的方式处理事务、数据访问等。 阅读详情

相关推荐

Spring框架最全知识点

Spring框架最全知识点总结

weixin_43515260的博客 926

@Qualifier#Qualifier注解@FDDLC

剧情回础:#Autowired注解 #@Autowired @FDDLC 在上一集中,我们知道,单独使用@Autowired可能会出现这么一种情况:匹配到多个Bean,且没有哪个Bean的名称和变量名相同。 比如: 假设有2个Bean,都实现了Car接口: 第1个Bean: @Component(value = "myBMW") public class BMW implementsCar{......} 第2个Bean: @Component(value = "myBenz") pub.

LiuXingchang的博客 944

Spring的注解@Qualifier注解

比如,有两个service实现了统一业务接口,并且都标注了@Service注解,Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除。@Qualifier是Spring中的注解,是在使用Spring框架中@Autowired注解进行自动注入时,Spring 容器中匹配的候选Bean数目必须有且仅有一个。也就是说:@Qualifier注解就是通过名字挑选符合条件的,通过这个标示,表明了哪个实现类才是我们所需要的。使用:配合autowired使用。...

流楚丶格念的博客 6291

@Qualifier的使用方法

@Qualifier详细的说明和代码的演示

可乐要加冰!!! 1347

5分钟搞定Unity+Visual Studio开发环境配置(含C#游戏开发工作负载)

本文提供了一份详细的Unity与Visual Studio开发环境配置指南,帮助开发者在5分钟内完成C#游戏开发工作负载的设置。从Unity Hub安装到Visual Studio关键组件选择,再到常见问题排查,全面覆盖环境搭建的各个环节,显著提升游戏开发效率。

weixin_29014237的博客 248

MCP详解:手把手教你理解和如何使用各种开源MCP服务

MCP 作为一种开放协议,为 AI 模型与外部世界的连接提供了标准化的解决方案。它不仅降低了开发门槛,还极大地扩展了 AI 应用的边界。无论是开发者还是普通用户,都可以通过 MCP 更高效地利用 AI 技术,实现更多智能化的功能。

王哥儿聊AI的博客 6056

23 SpringBoot @Qualifier注解

//定义亚洲人 @Qualifier("Asian") @Component public class AsianMan extends Person { } ········ //定义欧洲人 @Qualifier("Europe") @Component public class EuropeMan extends Person { } 注入bean时,可以使用@Autowired自动注入 public class Controller { @Qualifier("As.

qq_44885775的博客 2482

Unified Access Control:从NAS到RRC的5G接入控制全流程解析

本文深入解析了5G统一接入控制(Unified Access Control)的全流程,从NAS到RRC的协同工作机制。通过身份核验、业务分类和动态决策三个核心步骤,UAC实现了智能调度和弹性决策,确保海量设备接入时的网络稳定性。文章详细介绍了USIM卡的身份凭证体系、NAS层的业务分类引擎以及RRC层的动态决策机制,并提供了实战案例和常见问题排查方法。

weixin_30855099的博客 589

Spring框架知识点二

目录AOPAspectJ用AspectJ注解声明切面切入点表达式前置通知后置通知返回通知异常通知环绕通知指定切面的优先级演示案例:以XML方式配置切面JdbcTemplate持久化操作增删改批量增删改查询事务问题Spring事务管理编程式事务管理声明式事务管理Spring提供的事务管理器事务的传播行为事务的隔离级别事务的超时和只读属性事务总结(源代码测试)通过aspectj注解方式配置事务通过xml配置事务 AOP 1)AOP(Aspect-Oriented Programming,面向切面编程):是一种新

guochaoHNU的博客 840

分享一下如何使用labelimg制作自己的YOLO数据集

首先准备一下自己的下准备一个空文件夹用于保存标签文件,如下图所示。

skywalkerxhx的博客 831

深入浅出PWM:用示波器带你理解占空比与滤波效果

本文通过示波器实测,深入浅出地解析了PWM(脉宽调制)的核心原理。从占空比与平均电压的关系入手,详细演示了RC及有源滤波器如何将数字方波“翻译”为平滑模拟电压,并探讨了PWM-DAC的精度、响应速度等关键设计考量,为硬件调试与电路设计提供了实用的实践指导。

weixin_29292431的博客 345

框架源码知识点(spring)二

spring 知识点

willard_z的博客 842

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

spring5框架知识点总结(二)IOC篇

本文接上一篇文章:spring5框架知识点总结(一) 文章目录spring5框架知识点总结(二)IOC 操作 Bean 管理(xml 注入集合属性)IOC 操作 Bean 管理(FactoryBean)IOC 操作 Bean 管理(bean 作用域)IOC 操作 Bean 管理(bean 生命周期) spring5框架知识点总结(二) IOC 操作 Bean 管理(xml 注入集合属性) 1、注入数组类型属性 2、注入 List 集合类型属性 3、注入 Map 集合类型属性 (1)创建类,定义数组、list

m0_50654102的博客 183

沙猫群优化算法(SCSO)详解:从沙漠生存智慧到全局优化引擎

本文详细介绍了沙猫群优化算法(SCSO),这是一种新型元启发式优化算法,灵感来源于沙猫在沙漠环境中的卓越狩猎行为。SCSO通过模拟沙猫的低频探测能力和精确攻击策略,将优化问题转化为搜索和捕获"猎物"的过程。算法核心包括探索阶段(全局搜索)和开发阶段(局部精细搜索),通过灵敏度范围模型和自适应控制参数实现两者的平衡。SCSO具有参数简单、收敛性能好等优点,适用于解决复杂全局优化问题。

qq_42212808的博客 201

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

WW、forever的博客 195

Spring框架知识点(二)

目录: 1.spring的bean管理(注解) (1)使用注解创建对象 (2)使用注解注入属性 (3)Xml和注解方式混合使用 2.AOP (1)Aop概述 (2)Aop底层原理 (3)Aop操作相关术语 3.spring的aop操作(基于aspectj的xml方式) 4.Log4j介绍 5.Spring整合web项目演示 1.spring的bean管理(注解) 注解介绍 1.代码里面特殊标记,使...

gaofengyan的博客 218

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java之五大框架(Struts、Hibernate、MyBatis、Spring、Spring MVC)知识点总结(二)

这篇主要是补充上篇(传送门:https://blog.youkuaiyun.com/qq_36145093/article/details/88528910)关于Spring、Spring MVC框架相关的知识点总结。 目录 一、Spring框架知识点总结 1、Spring的理解 2、Spring的核心机制:DI(依赖注入)、IOC(控制反转模式) 3、AOP(面向切面编程) 4、Spring工作...

Xx丶浅时光的博客 1590

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

spring boot框架知识点整理(二)

1、DevTools 热部署 1.1 在pom.xml引入相关配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependenc

qq_37129192的博客 299

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring框架(二):Spring介绍以及BeanFactory和ApplicationContext

痛定思痛,主要问题出现在自己雀氏不熟悉框架基础、一些面试题,以及sql的使用淡忘了。 本章节的开始是对于过去的重新回顾,当然,我也会深入基础,阅读源码,仔细熟悉开发过程,对问题进行整体学习。今天是第一章节spring 篇, 相关代码已经推送到了 链接: link

futurn_hero的博客 128

Spring知识点总结

Spring知识点总结 1. 简介一下Spring框架。答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。 2. Spring框架有哪些优点?谈谈你的看法。答:Spring框架主要有三大优点:(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序...

lz1170063911的博客 2万+

Spring框架知识点

今天是圣诞节圣诞老人给我送了个系统bug,24号加班到晚上12点多在便利店买了杯暖柚发现有便利店真好,我还可以喝到暖暖的饮料,最近加班太多,原本今天请假休息、没想到圣诞老人给我送了礼物O(∩_∩)O哈哈~ 昨天系统迁移改造,修改的地方没有测试全面,导致生产功能报错,中午还没缓过来呢,就找vpn连接看问题,发邮件打版本,脑袋很沉、思考缓慢感觉我要挂了O(∩_∩)O哈哈~、最近思考了一下,有些东西记不住了感觉就在嘴边就是说不出来、忘了需要整理一下。给自己立个flag。我知道自己哪里不知道的我都要知道。也就是不

liuzhenteng521的博客 554

Spring面试知识点总结

Spring知识点总结 1. 简介一下Spring框架。答:Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点:容器、IOC(控制反转)、AOP(面向切面编程)。 2. Spring框架有哪些优点?谈谈你的看法。答:Spring框架主要有三大优点:(1) 容器。Spring框架是一个容器,能够管理项目中的所有对象。(2) IOC(控制反转)。Spring将创建对象的方式反转了,从程序...

lz1170063911的博客 1万+

Spring知识点

Spring知识点

YIYIYI 1580

SSM框架核心知识点总结

【代码】SSM框架核心知识点总结。

weixin_52236586的博客 1235
上一篇: Spring学习之思维导图
下一篇: Spring框架重要知识点总结(三)
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值