Spring的properties属性配置文件和Spring常用注解

Spring的properties属性配置文件

问题:

在学习了Spring的知识后,需要被Spring管理的资源都是通过配置文件的形式来告诉Spring容器对象管理谁以及如何管理。但是随着使用次数的增多,我们发现配置文件中配置的标签越来越多,每次我们创建一个新的项目时,将配置好的配置文件在该项目中只需要修改一下数据库连接参数即可正常使用,但是因为配置文件的内容越来越多,造成配置文件的阅读性越来越差,数据库连接参数的修改不太好找到,怎么办?

解决:

将数据库相关参数提取到一个新的文件中专门配置,然后在 applicationcontext.xml配置文件中获取数据库连接参数配置文件中的配置信息,说白了就是将数据库连接参数和Spring的配置文件之间解耦

实现:
Spring的属性配置文件配置数据库连接参数
使用:

① 在src下创建db.properties文件,声明数据库连接参数。 注意:配置的为键值对数据
在这里插入图片描述

② 在applicationcontext.xml中配置属性文件的扫描
在这里插入图片描述

③ 在数据源bean中使用${键名}的方式获取属性文件中的数据库连接参数
在这里插入图片描述

注意:

将factory的bean和mapper扫描的bean之间的依赖注入变为普通的属性注入,因为依赖注入>属性文件扫描>属性注入。如果不将factory和mapper扫描之间的依赖注入变为属性注入,会造成数据库参数还没有从配置文件中读取到容器中,就去进行mapper扫描了,会报数据库参数异常的错误。
在这里插入图片描述

Spring的常用注解

① @Component:使用在普通java类上

② @Service:使用在业务层类上
作用:

声明一个类的对象为bean对象,相当于配置了bean标签。

注意:

相当于使用的是无参数构造器来创建对象。

问题:

只使用@Service注解,和 A a=new A();的效果是相同的,创建的是一个没有初始化数据的bean对象,但是在实际生产环境中很多时候需要Spring容器帮我们创建一个带有初始化数据的对象(属性注入|依赖注入)

解决:

仍然使用注解,告诉Spring容器对象,如何给注解声明的对象进行初始化的赋值.,基本类型属性赋值和引用类型属性赋值

实现:

依赖注入的注解:@Autowire和@Resource
属性注入的注解:@Value

③ @Controller:使用在控制层类上,SpringMVC
作用:

声明一个类的对象为bean对象,相当于配置了bean标签

使用:

在SpringMVC的控制器类上使用。

④ @Repository
作用:

声明一个类的对象为bean对象,相当于配置了bean标签

使用:

在数据库功能类上使用。比如Dao层对象

⑤ @Resource
作用:

替换在配置文件的依赖注入的。

使用:

在有依赖关系的属性上使用,比如A中有B属性,则在B属性上声明,告诉Spring容器对象将B的bean对象注入到A的bean对象中

注意:

此注解是jdk官方的注解,不是Spring的注解,会先按照byName的方式注入,如果没有则按照byType的方式 继续注入,如果都没有则不注入。并且不需要提供get/set方法

⑥ @Autowired
作用:

和@Resource相同,都是替换依赖注入的配置的。

使用:

在需要依赖注入的属性上声明

注意:

该注解是Spring官方提供的,默认使用byType.

⑦ @Value
作用:

用来替换配置文件中的属性注入的。

使用:

在属性上声明,值为${“键名”}

示例: @Value(${“name”})

注意:

使用此注解的注入,无需提供get/set方法。

示例:

在这里插入图片描述

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

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

相关文章

即日起,正式进入编程世界!

点击上方蓝色关注我们!从今天开始,正式进入编程世界。首先我们先从堪称“少儿编程”的Scratch开始,简洁的编辑窗口加上可读性较高的Chinese(大部分的编程编辑器均为英文版),使得该软件特容易上手。班内总有…

使用领域事件

1.引言 最近刚学习了下DDD中领域事件的理论知识,总的来说领域事件主要有两个作用,一是解耦,二是使用领域事件进行事务的拆分,通过引入事件存储,来实现数据的最终一致性。若想了解DDD中领域事件的概念,可参…

ssl2331OJ1373-鱼塘钓鱼 之1【纯贪心】

前言 dp做法 堆优化贪心做法 题目:OJ1373 正题 有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数 解题思路 由于数据较小,我…

手把手教会你(单/多)文件上传(并修改文件默认的最大最小值)

/*** MultipartFile 自动封装上传过来的文件* param email* param username* param headerImg* param photos* return*/PostMapping("/upload")public String upload(RequestParam("email") String email,RequestParam("username") String usern…

深入浅出讲解语言模型

转载自 深入浅出讲解语言模型 深入浅出讲解语言模型 1、什么是语言模型呢? 简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率? 那么如何计算一个句子的概率呢?给定句子&…

set注意点map遍历

/** 使用各种set存储多个学生信息问题1:为什么课程名称(String)放入到HashSet、LinkedHashSet都可以保证唯一性,但是学生(Student)放入到HashSet、LinkedHashSet,却无法实现唯一性。问题2&…

《认知红利》读书笔记

认知红利 谢春霖 24个笔记 ◆ 上篇 概念重塑 所以,金钱并不是你的财富,而是你“已经交换出去的那部分财富”的数字存在形式而已。 总之,真不真不重要,对不对不重要,你看不看才重要! 一片树叶从树上落下&am…

基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

一、前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知。随着岁月的成长,技术也从原来的三层设计到…

ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】

前言 上篇:纯贪心做法 下篇:dp做法 题目:OJ1373 正题 有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数 解题思路…

NLP Coursera By Michael Collins - Week1

转载自 NLP Coursera By Michael Collins - Week1 NLP Coursera By Michael Collins - Week1 构建模型框架 - Markov Process 毕竟是机器学习嘛,所以第一步,先要把实际问题转化成数学模型。 在NLP中,一般使用的都是概率模型,…

JDBC登录功能实现

模拟淘宝登录 package com.bjsxt.jdbc2;import com.bjsxt.entity.User; import entity.Emp;import java.nio.file.attribute.UserDefinedFileAttributeView; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner;/*** 模拟淘宝登…

19级:班级日常分享,一天一瞬间

点击上方蓝色关注我们!19级的同学们目前正在做KTV点歌系统项目,截止今日为止,项目已经进展了1天多了,进度还在可控范围内,大部分组的后台都已完成,刘娜小组稍微比较慢了点儿。李磊小组的进度最快&#xff0…

Attentive Sequence to Sequence Networks

转载自 Attentive Sequence to Sequence Networks Attentive Sequence to Sequence Networks 1、Encoder-Decoder 框架 首先我们模型的整体框图如下: Encoder-Decoder 框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章&a…

ssl2331OJ1373-鱼塘钓鱼 之3【dp】

前言 上篇: 纯贪心做法 堆优化贪心 题目:OJ1373 正题 有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数 解题思路 用f[i][…

多线程三种创建方式

方法一:继承Thread Thread package com.bjsxt.create;/*** author dell* data 2021/3/2* 创建一个线程对象,并启动线程** 注意:启动main方法,自动创建main线程* * thread.join() 阻塞乌龟线程,乌龟执行完…

20级四班班级管理规章制度

点击上方蓝色关注我们!

完全图解RNN、RNN变体、Seq2Seq、Attention机制

转载自 完全图解RNN、RNN变体、Seq2Seq、Attention机制 完全图解RNN、RNN变体、Seq2Seq、Attention 机制 本文首发于知乎专栏“ai insight”! 本文主要是利用图片的形式,详细地介绍了经典的RNN、RNN几个重要变体,以及Seq2Seq模型、Attent…

OJ1306-最长公共子上升序列【dp】

前言 这是一道比较久之前的题了,之前没做完。不过这次不是因为我改了,而是数据改了(可能之前有问题),然后偶然今天翻的时候就发现自己对了QAQ。 题目 OJ1306 就是给出两个序列,求出这两个序列中公共的最…