Spring基础知识(四)

目录

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";
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《微服务实战》 第三十二章 微服务链路跟踪-sleuth zipkin

系列文章目录 第三十二章 微服务链路跟踪-sleuth zipkin 第三十章 分布式事务框架seata TCC模式 第二十九章 分布式事务框架seata AT模式 第十二章 Spring Cloud Alibaba Sentinel 第十一章 Spring Cloud Alibaba nacos配置中心 第十章 SpringCloud Alibaba 之 Nacos discover…

APP外包开发中的第三方工具

APP外包开发过程中需要用到各种的第三方服务平台和工具&#xff0c;这些平台和工具可以提高开发效率和更规范的管理项目&#xff0c;今天和大家分享常见的一些平台和工具&#xff0c;从UI设计、开发、测试到上线覆盖APP开发的整个流程&#xff0c;希望对大家有所帮助。北京木奇…

Solr框架 02.Solr操作(document操作和query查询)

菜单项目Documents使用办法 其中的document选项&#xff1a; 以XML格式举例 1新增/修改 当id不存在时新增&#xff0c;当id存在修改。 <doc> <field name"id">8</field> <field name"name">明天更大卖</field> <field n…

CVE-2023-34541 LangChain 任意命令执行

漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中&#xff0c;由于load_prompt函数加载提示文件时未对加载内容进行安全过滤&#xff0c;攻击者可通过构造包含恶意命令的提示文件&#xff0c;诱导用户加载该文件&#xff0c;即可造成…

Spring Boot 中的 @SendTo 注解

Spring Boot 中的 SendTo 注解 在 Spring Boot 中&#xff0c;SendTo 注解是一个非常有用的注解&#xff0c;它可以用于实现 WebSocket 的消息转发功能。本文将介绍 SendTo 注解的原理、使用方法和示例代码。 什么是 SendTo 注解 SendTo 注解是 Spring Boot 中用于将消息发送…

【MOOC 测验】第4章 网络层

1‌、下列关于路由算法描述错误的是&#xff08; &#xff09; A. 链路状态算法是一种全局路由算法&#xff0c;每个路由器需要维护全局状态信息B. OSPF 是一种域内路由协议&#xff0c;核心是基于 Dijkstra 最低费用路径算法C. RIP 是一种域内路由算法&#xff0c;核心是基…

docker网络

一、docker网络概述 1、docker网络实现的原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c; 同时Docker网桥是 每个容器的…

基于ENVI的遥感影像的非监督分类

ENVI包括了ISODATA和K-Mean两种非监督分类方法。 ISODATA&#xff08;Iterative Self-Orgnizing Data Analysize Technique&#xff09;是一种重复自组织数据分析技术&#xff0c;计算数据空间中均匀分布的类均值&#xff0c;然后用最小距离技术将剩余像元进行迭代聚合&#x…

Unreal 5 实现使用GPU Instancing批量渲染相同的物体

之前做unity的时候&#xff0c;专门研究了使用GPU进行批量相同的物体渲染&#xff0c;现在转ue以后&#xff0c;发现UE也有相同的功能。接下来讲解一下&#xff0c;在ue里面如何实现通过GPU进行实例化渲染。 创建组件 能够实现GPU实例化渲染&#xff0c;ue提供了两个组件&…

最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇教程

详情点击链接&#xff1a;最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇 一&#xff0c;生态环评报告编制规范 结合生态环境影响评价最新导则&#xff0c;详述不同类型项目生态环评报告编制要求与规范 二&#xff0c;土地利用图 1、土地利用分类体系…

go系列-读取文件

1 概述 2 整个文件读入内存 直接将数据直接读取入内存&#xff0c;是效率最高的一种方式&#xff0c;但此种方式&#xff0c;仅适用于小文件&#xff0c;对于大文件&#xff0c;则不适合&#xff0c;因为比较浪费内存。 2.1 直接指定文化名读取 在 Go 1.16 开始&#xff0c;i…

HackTheBox - 学院【CPTS】复习4 - Web Attacks

Web Attacks 本模块涵盖三种常见的 Web 漏洞&#xff0c;即 HTTP 动词篡改、IDOR 和 XXE&#xff0c;每个漏洞都可能对公司的系统产生重大影响。我们将介绍如何通过各种方法识别、利用和防止它们中的每一个。 HTTP HEAD/GET/POST/PUT/OPTIONS IDOR寻找 一般能够从前端js找到…

.Net 4726.0 Razor编译时的小差异

前言 几个月前在进行着.Net 472到6.0的升级&#xff0c;复用原有代码&#xff0c;在对Razor进行迁移中&#xff0c;发现原运行正常的代码&#xff0c;却存在报错&#xff0c;深入研究发现是Core下对Razor编译有一些变动。 问题复现 472 创建视图 新建.Net Framework下Mvc&#…

软件测试的自动化工具

在软件开发过程中&#xff0c;测试是必不可少的一个环节。而在测试中&#xff0c;测试人员需要花费大量的时间和精力进行手动测试&#xff0c;这不仅费时费力&#xff0c;而且效率较低。因此&#xff0c;自动化测试工具的出现为测试人员提供了更加便捷高效的测试方法。本文将介…

(二)Qt QGraphicsScene模块实现圆点绘制在所有窗体的最前方,实现圆点的“彩色拖尾”效果以及“选中方框”效果

系列文章目录 通过Qt实现手势识别控制软件操作相关系列技术方案 &#xff08;一&#xff09;Qt 将某控件、图案绘制在最前面的方法&#xff0c;通过QGraphicsScene模块实现 &#xff08;二&#xff09;Qt QGraphicsScene模块实现圆点绘制在所有窗体的最前方&#xff0c;实现圆…

Spring Boot 中的 WebSocketSession 是什么,原理,如何使用

Spring Boot 中的 WebSocketSession 是什么&#xff0c;原理&#xff0c;如何使用 介绍 在现代 Web 应用程序中&#xff0c;实时通信是一个非常常见的需求。传统的 HTTP 协议是无法支持实时通信的&#xff0c;因为它是一种无状态协议&#xff0c;每次请求都是独立的&#xff0…

LangChain:LLM应用程序开发(上)——Models、Prompt、Parsers、Memory、Chains

文章目录 一、Models、Prompt、Parsers1.1 环境配置&#xff08;导入openai&#xff09;1.2 辅助函数&#xff08;Chat API : OpenAI&#xff09;1.3 使用OpenAI API进行文本翻译1.4使用LangChain进行文本翻译1.5 使用LangChain解析LLM的JSON输出1.5.1 LangChain输出为string格…

基于Java的万年历(课设)

基于Java的万年历 资源链接&#xff1a;基于Java的万年历&#xff08;课设&#xff09; 文章目录 基于Java的万年历1 绪论2 需求分析3 概要设计3.1 类间组合框架3.2 布局结构示意3.3 对各个类的概述 4运行环境5 开发工具和编辑语言6 详细设计6.1 NiceCaelendar类6.2 NiceFram…

LeetCode 2501 数组中最长的方波 Java

方法一&#xff0c;哈希表枚举 构造哈希集合&#xff0c;记录出现过的数字枚举遍历 import java.util.HashSet; import java.util.Set;class Solution {public int longestSquareStreak(int[] nums) {//构造哈希表集合&#xff0c;记录出现过的数字&#xff0c;转long型&…

如何在Microsoft Excel中迅速冻结首行和末行

如果你正在处理一个大型电子表格&#xff0c;那么冻结某些行或列会很有用&#xff0c;这样当你滚动浏览工作表的其余部分时&#xff0c;它们会留在屏幕上。 当你在 Excel 中滚动浏览大的工作表时&#xff0c;你可能希望保留一些行或列&#xff0c;例如页眉。Excel 允许你通过以…