Spring基础知识(四)

news2024/11/15 23:25:49

目录

1.Spring包含的模块主要有什么

2.Core Container的作用

3.Data Access/Integration模块的作用

4.AOP模块的作用

5.Spring Web模块的作用

6.Test模块的作用

7.如何将一个类声明为Bean

8.@Component和@Bean的区别

9.能够注入Bean的注解有什么

10.@Resource注解


1.Spring包含的模块主要有什么

        核心容器:Core Container

        数据访问/整合:Data Access/Integration

        面向切面编程:AOP

        面向网页:Spring Web

        单元测试:Test

详细图例如下:

 

2.Core Container的作用

1.是Spring框架的核心模块,主要提供IoC控制反转的依赖注入功能的支持

2.Spring其他所有功能都需要依赖此模块

3.Core Container中包含的模块作用

        spring-core:Spring框架基本的核心工具类

        spring-beans:提供对bean的装配、管理、实例化功能

        spring-context:提供对国际化、事件传播、资源加载等功能

        spring-expression:提供对表达式语言的支持

3.Data Access/Integration模块的作用

        spring-jdbc:提供对数据库访问功能

        spring-tx:提供对事务的支持

        spring-orm:提供对Hibernate、iBatis等ORM框架的支持

        spring-oxm:通过抽象层支撑OXM

        spring-jms:提供消息服务

注意:

        ORM,Object Relation Mapping;对象关系映射

        OXM,Object XML Mapping;对象与XML映射

4.AOP模块的作用

AOP,Aspect Oriented Programming,包含以下模块:

        spring-aspects:为AspectJ的集成提供支持

        spring-aop:提供面向切面编程

        spring-instrument:提供为JVM添加代理的功能

注意:AspectJ注解是AOP思想的具体实现方式

5.Spring Web模块的作用

spring-websocket:提供WebSocket支持,WebSocket能够使得客户端与服务端进行双向通信

spring-webmvc:提供Spring MVC支持

spring-web:提供Web功能支持

spring-webflux:提供WebFlux支持

注意:WebFlux是一个完全异步的响应式框架

6.Test模块的作用

Spring的测试对JUnit等常用的测试框架进行支持,使得单元测试变得十分简单

7.如何将一个类声明为Bean

使用注解:@Component,标注任意类为Spring的组件

也可以使用@Controller、@Service、@Repository

8.@Component和@Bean的区别

1.作用的位置不同:

        @Component作用于类,@Bean作用于方法

2.灵活性不同:引入第三方库的类的方法装配到Spring容器时,只能用@Bean实现

3.原理不同:

        @Component通过类路径扫描后自动装配到Spring容器中

        @Bean是在标注的方法中定义了一个bean,从而可以使用这个bean

9.能够注入Bean的注解有什么

Spring内置:@Autowired注解,自动装配时进行依赖注入

JDK内置:@Resource注解

10.@Resource注解

源码:

@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
    
    String name() default "";

    
    String lookup() default "";

   
    Class<?> type() default java.lang.Object.class;

    
    enum AuthenticationType {
            CONTAINER,
            APPLICATION
    }

    /
    AuthenticationType authenticationType() default AuthenticationType.CONTAINER;

    
    boolean shareable() default true;

    
    String mappedName() default "";

   
    String description() default "";
}

根据name属性是否有值进行依赖注入:

        有值,则根据指定值寻找Spring容器的Bean对象进行依赖注入

@Controller
public class testAnnotation {
    @Resource(name = "aaa")
    @RequestMapping("/")
    public String testIndex(){
        return "index";
    }
}

        没有值,则默认取将要注入的属性的字段名,找到一个Bean对象然后注入即可

@Controller
public class testAnnotation {
    @Resource
    @RequestMapping("/")
    public String testIndex(){
        return "index";
    }
}

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

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

相关文章

【Java】Java 中格式化字符串:String.format() 方法

本文仅供学习参考&#xff01; 相关文章地址&#xff1a; https://www.cnblogs.com/Dhouse/p/7776780.html https://www.javatpoint.com/java-string-format https://www.geeksforgeeks.org/java-string-format-method-with-examples/ 前言 虽然System.out.println()适合调试和…

5 STM32复位和时钟控制

STM32的复位功能 系统复位&#xff1a; 系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器为它们的复位数值。&#xff08;按键复位和软件复位属于系统复位&#xff09; 电源复位&#xff1a; 电源复位将复位除了备份区域外的所有寄存器。…

【Flink】DataStream API使用之转换算子(Transformation)

转换算子&#xff08;Transformation&#xff09; 数据源读入数据之后&#xff0c;就是各种转换算子的操作&#xff0c;将一个或者多个DataSream转换为新的DataSteam&#xff0c;并且Flink可以针对一条流进行转换处理&#xff0c;也可以进行分流或者河流等多流转换操作&#xf…

sql with子语句的理解

在用sqlite时&#xff0c;用到了with子语句&#xff0c;记录下对其的理解 目的&#xff1a;在1个字段中找到真正包含的数据&#xff0c;一般用于like&#xff0c;但该字段可能是复杂的字符串数组。 例子数据&#xff0c;如&#xff1a; 【E2806894200050010B93C473,123456】…

软件分享:Cpu-Z电脑CPU检测工具介绍(附下载)

目录 一、软件介绍 二、功能介绍 三、使用方法 1、通过 CPU-Z 查看 CPU 信息 2、缓存信息 3、主板信息 4、内存信息 5、内存规格信息&#xff08;SPD&#xff09; CPU是计算机中负责读取指令&#xff0c;对指令译码&#xff0c;并执行指令的核心部件。CPU自产生以来&am…

chatgpt赋能python:用Python计算BIM:优点、应用和结论

用Python计算BIM&#xff1a;优点、应用和结论 Building Information Modeling&#xff08;BIM&#xff09;是一种数字化的建筑设计和施工方法&#xff0c;它包括从建筑物的设计、施工到维护和拆除的整个生命周期。BIM在大规模工程建设中越来越受到欢迎&#xff0c;Python编程…

单片机强排热水器方案

单片机强排热水器方案 MCU型号 MM32SPIN05TW、MM32SPIN080C 产品概述 MM32SPIN05TW本产品使用高性能的ArmCortex-M0为内核的32位MCU&#xff0c;最高工作频率可达72MHz&#xff0c;内置高速存储器&#xff0c;丰富的I/O端口和外设连接到外部总线。本产品包含1个12位ADC、1个比…

【群智能算法改进】基于二次插值策略的改进白鲸优化算法 改进后的EBWO[3]算法【Matlab代码#44】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始BWO算法2. 基于二次插值策略的EBWO算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始BWO算法 白鲸优化算法 (BWO&#xff0c;beluga whale optimization)…

宝塔SSL续签以及申请报CURL(7)与CURL(28)错误解决方案

说一下具体背景以及遇到的问题&#xff1a; 主要是网站的SSL过期以后&#xff0c;点击宝塔里的续签功能&#xff0c;弹出一个黑框&#xff0c;等超时后报以下错误 其中也尝试过很多方法&#xff0c;都没什么用&#xff0c;当然&#xff0c;如果报错信息不是这类情况&#xff…

3D开发工具HOOPS可构建PLM程序,数据共享更便捷

产品生命周期管理 (PLM) 解决方案实际上都是将制造生产系统粘合在一起的粘合剂&#xff0c;提供从头到尾的数字主线并为最终用户优化流程。 Tech Soft 3D不是构建 PLM 应用程序的专家&#xff0c;但却对构建领先应用程序所基于的组件技术&#xff0c;以及 SDK 如何提供必要的核…

MiniGPT-4原理解读——大模型论文阅读笔记三

论文&#xff1a;https://arxiv.org/pdf/2304.10592v1.pdf 代码&#xff1a;https://github.com/vision-cair/minigpt-4 一. 作者动机 GPT-4展示了非凡的多模态能力&#xff0c;比如直接从手写文本生成网站&#xff0c;以及识别图像中的幽默元素。这些特性在以前的视觉语言模…

Scrum敏捷看板工具在项目管理中的作用

Scrum是迭代式增量软件开发过程&#xff0c;是敏捷方法论中的重要框架之一&#xff0c;通常用于敏捷软件开发。 当开发团队在用 Scrum 这种开发方法开发项目时&#xff0c;可以利用敏捷看板&#xff0c;可视化透明且灵活的高效的完成工作。 使用敏捷看板可以使&#xff1a; …

ChatGPT批量生成文章软件:创意无限,助力高效创作

随着人工智能技术的不断发展&#xff0c;ChatGPT批量生成文章软件成为了一种强大的创作工具。这款软件以其无限创意和高效助力&#xff0c;极大地提升了文章创作的效率。在本文中&#xff0c;我们将从多个方面详细阐述ChatGPT软件的特点和优势。 一、智能创作能力 ChatGPT软件…

2023年5月青少年机器人技术等级考试理论综合试卷(一级)

青少年机器人技术等级考试理论综合试卷&#xff08;一级&#xff09;2023.6 分数&#xff1a; 100 题数&#xff1a; 45 一、 单选题(共 30 题&#xff0c; 共 60 分) 1.机器人的电源相当于人类的&#xff1f; &#xff08; &#xff09; A.大脑 B.皮肤 C.血管 D.心脏 标准答案…

赛效:如何将PDF文件转成图片

1&#xff1a;打开PDF文件&#xff0c;登录账号之后&#xff0c;点击“文档转换”里的“PDF转图片”。 2&#xff1a;在转换页面&#xff0c;点击“上传文件”&#xff0c;将电脑本地的PDF文件添加到页面上去。 3&#xff1a;在右侧图片分辨率下拉菜单里&#xff0c;选择自己需…

Vue3学习(三)前后端数据交互

一、前后端分离 IDEA软件、JDK1.8、Mysql5.7、Navicat、SpringBoot2.x pom配置阿里云仓库 <repositories><repository><id>nexus-aliyun</id><name>nexus-aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/…

JavaWeb网络安全-弱口令自查

1.背景 项目中&#xff0c;创建用户没有校验密码强度&#xff0c;弱口令会导致一系列安全问题。然而用户表数据加密加盐&#xff0c;我们无法直接知道哪些用户使用了弱口令。 网络安全的首要步骤是检查系统中的弱口令。一旦网络攻击者获取了我们的弱口令并成功登录系统&#x…

利用MAP函数计算一系类数字的平方

1 问题 如何使用map函数计算一系列数字平方。 2 方法 通过使用定义函数&#xff08;add&#xff09;&#xff0c;创建一个list&#xff0c;包含这一系列数字&#xff0c;再使用map函数。 通过实验、实践等证明提出的方法是有效的&#xff0c;是能够解决开头提出的问题。 代码清…

linux更改 docker 为非 root 用户运行

首先创建docker用户组&#xff0c;如果docker用户组存在可以忽略 sudo groupadd docker把用户添加进docker组中 sudo gpasswd -a ${user} docker使用普通账户重启docker sudo service docker restart使用root用户修改/var/run/docker.sock权限 sudo chmod arw /var/run/doc…

【Flink】Flink 中的时间和窗口之水位线(Watermark)

1. 时间语义 这里先介绍一下什么是时间语义&#xff0c;时间语义在Flink中是一种很重要的概念&#xff0c;下面介绍的水位线就是基于时间语义来讲的。 在Flink中我们提到的时间语义一般指的是事件时间和处理时间&#xff1a; 处理时间(Processing Time)&#xff0c;一般指执…