spring框架的配置方案

spring框架在使用过程中,需要对它进行一系列的配置才可以使用,在spring发展过程中,配置方式也发生了一些变化:

2.5版本前====>xml
2.5版本后====>annonation+xml
3.0版本后====>annonation+javaConfig配置类

目录

 2.5版本前:xml

 2.5版本后:annonation+xml

1.注入类:用来注入对象 

2.注入数据

 3.其他注解

3.0版本后:annonation+javaConfig配置类


 

 2.5版本前:xml

2.5版本以前,配置spring框架使用的是纯xml的方法,将每个对象都使用<Bean></Bean>注入进框架中,使用方法大概如下:

使用xml方式注入类有三种方式:

构造注入:使用构造方法注入bean;

<bean id="" class="" init-method="" destroy-method="" scope="" autowire="">
        <constructor-arg></constructor-arg>

</bean> 

Setter注入:使用Setter方法注入bean;

<bean id="" class="" init-method="" destroy-method="" scope="" autowire="">
        <property></property>

</bean> 

属性注入:使用成员属性注入bean,不推荐。原因:使用私有的成员属性变量,依靠反射实现,破坏封装,只能依靠IOC容器实现注入,不严谨;

 2.5版本后:annonation+xml

2.5版本以后,为了弥补xml配置方式的缺点:过于复杂,就有了注解和xml一起使用来配置spring的方式;常用的spring注解大致分为以下几类:

1.注入类:用来注入对象 

@Component
            含义:将注解所修饰的类(任意类)注入spring容器
            位置:类
            语法:@Component(value = "id")
                 如果省略value="id"默认注入的id为类的名称且首字母小写
            注意:不可以单独使用
                <context:component-scan base-package=""></context:component-scan>

@Repository 注入数据访问层
@Service    注入业务层
@Controller 注入控制层
            以上三个注解与@Component功能语法一致

2.注入数据

 @Value()
            含义:向属性注入基本类型与String
            语法:@Value("数据")
                 @Value("${key}")
            位置:属性
            注意:不能单独使用,需要搭配
                <context:property-placeholder location=""></context:property-placeholder>
 @Autowired()
            替换:自动装配属性
            位置:属性
            含义:通过“set”方法【set方法可以省略】,按照“类型”自动装配,如果类型冲突则按照"名称"装配
            注意:
                1.按类型装配如果冲突切换为名称装配
                2.按类型装配如果冲突切换为名称装配,如果名称也没有则会抛异常
                    NoUniqueBeanDefinitionException
                3.按类型装配没一个匹配
                    NoSuchBeanDefinitionException

 3.其他注解

 @Primary
            含义:在类型装配冲突的情况下,此注解所修饰的类作为首选项
            位置:类
            注意:不能单独用
 @Qualifier
            含义:按照名称装配
            位置:属性
            注意:不能单独用
@Resource
            含义:按照名称装配
            位置:属性
            注意:单独用
 @Scope
            含义:作用域

            属性值:

                        singleton :Spring只会为该bean对象只会创建唯一实例,Spring 中的 bean 默认都是单例;
                        prototype :每次获取bean,Spring会创建一个新的 bean实例;
                        request:每一次 HTTP 请求,Spring会创建一个新的 bean实例;
                        session :不同的HTTP会话,Spring会创建不同的 bean实例;
            位置:类
            注意:不能单独用
            举例:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@PreDestroy
            含义:替换destory-method
            位置:方法
            注意:单独用
@PostConstruct
            含义:替换init-method
            位置:方法
            注意:单独用

3.0版本后:annonation+javaConfig配置类

spring在3.0版本以后,为了更加优化配置方式,就有了注解加配置类的方式来配置spring框架,因此就有了一些新的注解来完成配置;

 @Configuration
            含义:配置类
            注意:调用时要使用AnnotationConfigApplicationContext(applicationConfig.class)
@ComponentScan
            替换:<context:component-scan base-package=""></context:component-scan>
@PropertySource()
            替换:<context:property-placeholder location=""></context:property-placeholder>
@Import()
            含义:导入其他配置类
@Bean
            含义:注入类;方法返回值为class 方法名称为id
            位置:修饰方法
            注意:单独使用无需扫描 

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

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

相关文章

AI绘图实战(十二):让AI设计LOGO/图标/标识 | Stable Diffusion成为设计师生产力工具

S&#xff1a;AI能取代设计师么&#xff1f; I &#xff1a;至少在设计行业&#xff0c;目前AI扮演的主要角色还是超级工具&#xff0c;要顶替&#xff1f;除非甲方对设计效果无所畏惧~~ 预先学习&#xff1a; 安装及其问题解决参考&#xff1a;《Windows安装Stable Diffusion …

百度UEditor编辑器如何关闭抓取远程图片功能

百度UEditor编辑器如何关闭抓取远程图片功能 这个坑娘的功能&#xff0c;开始时居然不知道如何触发&#xff0c;以为有个按钮&#xff0c;点击一下触发&#xff0c;翻阅了文档&#xff0c;没有发现&#xff0c;然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发&a…

华为数通HCIA-华为VRP系统基础

什么是VRP? VRP是华为公司数据通信产品的通用操作系统平台&#xff0c;作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。 VRP提供以下功能&#xff1a; 实现统一的用户界面和管理界面 实现控制平面功能&#xff0c;并定义转发平面接口…

[数据集][目标检测]遛狗不牵绳数据集VOC格式-1980张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1980 标注数量(xml文件个数)&#xff1a;1980 标注类别数&#xff1a;5 标注类别名称:["dog","p…

yo!这里是STL::vector类简单模拟实现

目录 前言 重要接口模拟实现 默认成员函数 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 迭代器 简单接口 1.size() 2.capacity() 3.swap() 操作符重载 1.操作符[] 扩容接口 1.reserve() 2.resize() 增删查改接口 1.push_back() 2.pop_back() …

大数据Flink(五十五):Flink架构体系

文章目录 Flink架构体系 一、 Flink中的重要角色 二、Flink数据流编程模型 三、Libraries支持

Flutter Flar动画实战

在Flare动面出现之前,Flare动画大体可以分为使用AnimationController控制的基础动画以及使用Hero的转场动画,如果遇到一些复杂的场景,使用这些动画方案实现起来还是有难度的。不过,随着Flutter开始支持Flare矢量动面,Flutter的动画开发也变得越来越简单。事实上,Flare动画…

实现天气预报走势图

实现效果&#xff1a; 这里我用的天气接口是网上开源的&#xff0c;可以自己找一下。 稍微简单封装了一下axiso以及接口 封装的axios&#xff1a; // import { useUserStore } from /stores/user import axios from axios import router from /router import { ElMessage } f…

9 多进程编程

文章目录 进程以及状态进程进程的状态linux下的进程管理pstopbgkillcrontab 进程的创建两个while同时运行示例获取进程pidProcess 结构给子进程指定的函数传递参数进程间是否共享全局变量补充 进程间通信-Queue常用操作Queue 实例 管道通信&#xff08;了解&#xff09;样例 进…

问题:idea启动项目错误提示【command line is too long. shorten command line】

问题&#xff1a;idea启动项目错误提示【command line is too long. shorten command line】 参考博客 问题描述 启动参数过长&#xff0c;启动项目&#xff0c;错误提示 原因分析 出现此问题的直接原因是&#xff1a;IDEA集成开发环境运行你的“源码”的时候&#xff08…

python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝

决策树算法 模拟相亲的过程&#xff0c;通过相亲决策图&#xff0c;男的去相亲&#xff0c;会先选择性别为女的&#xff0c;然后依次根据年龄、长相、收入、职业等信息对相亲的另一方有所了解。 通过决策图可以发现&#xff0c;生活中面临各种各样的选择&#xff0c;基于我们的…

vue动态绑定多个class以及带上三元运算或其他条件

在Vue中&#xff0c;有多种方法可以动态添加样式。下面介绍几种常用的方法&#xff1a; 1. 使用动态绑定的方式&#xff1a; 可以使用:style指令将一个对象作为值传递给它&#xff0c;对象的属性名表示要设置的样式属性&#xff0c;属性值表示要设置的样式值。例如&#xff1…

网络安全 Day26-PHP 简单学习

PHP 简单学习 1. 为什么要学习PHP2. PHP语法3. php 变量4. 字符串数据5. PHP 函数6. 数组 1. 为什么要学习PHP php存量多开源软件多很多安全流程 渗透方法 sql注入基于PHP语言入门简单 2. PHP语法 格式: <?php 内容?>或<?内容?>结尾分号例子<?php phpin…

ES智能推荐

用 ElasticSearch 实现 “猜你喜欢” 智能推荐_elasticsearch 推荐算法_程序员刘一二的博客-CSDN博客 个性化推荐系统从0到1-腾讯云开发者社区-腾讯云 ElasticSearch学习29_基于Elasticsearch实现搜索推荐_Wang_Zhenwei的博客-CSDN博客 https://github.com/IBM/elasticsearch-…

Stable Diffusion - SDXL 1.0 全部样式设计与艺术家风格的配置与提示词

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132072482 来源于 Anna Dittmann 安娜迪特曼&#xff0c;艺术家风格的图像&#xff0c;融合幻想、数字艺术、纹理等样式。 SDXL 是 Stable Diffus…

特性Attribute

本文只提及常用的特性&#xff0c;更多特性请查看官方文档。 AddComponentMenu - Unity 脚本 API 常用特性 AddComponentMenu 添加组件菜单 使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本&#xff0c;而不仅是“Component > Scripts”菜单。 使用…

mxgraph的核心元素详谈

前言: MxGraph是一个流行的开源图形库,它提供了一stop solution for creating graphical representations of data。下面是MxGraph的核心源码讲解: 正文: Graph Structure(图结构): MxGraph将一个图表示为一个层次结构,由节点和边组成。节点表示图中的顶点,而边表示它…

go 基本语法(简单案例)

&#xff01;注&#xff1a; go中 对变量申明很是严格&#xff0c;申明了&#xff0c;在没有使用的情况下&#xff0c;也会产生编译错误 1.行分隔符 一行就是代码&#xff0c;无&#xff1b;分割&#xff0c;如果需要在一行展示&#xff0c;需要以&#xff1b;分割&#xff0c;…

Elasticsearchr入门

首先在官网下载elasticsearch8.9版本&#xff0c;以及8.9版本的kibana。 解压&#xff0c;点击es8.9bin目录下的elasticsearch.bat文件启动es 如图所示即为成功。 启动之后打开idea&#xff0c;添加依赖 <dependency><groupId>com.fasterxml.jackson.core</g…

MySQL~mysql基础应用相关题

整卷阅览&#xff1a; 想要获取试卷原版请点击以下链接下载&#xff1a; https://download.csdn.net/download/qq_53142796/88168133https://download.csdn.net/download/qq_53142796/88168133 解题过程&#xff1a; 数据库&#xff1a;studentdb 数据库表如下&#xff1a; …