Spring的配置与使用

一、Spring的组成

    其中最核心的是Core Container核心容器

二、spring框架的作用:

  对于我目前了解的spring框架,其中一个作用是用来降低程序间的耦合度的,也就是降低程序间的依耐性。

IOC:inversion of control 控制反转-->即将app和资源分开,通过一个工厂来联系,将app中想要获得资源的控制权交给了工厂,所以叫做控制反转

  即对象的创建通过spring在读取配置文件(或进行注解扫描)时就进行创建(单例模式),而程序需要用到对象时就从spring容器中取,从而降低了两个程序间的依赖关系

DI:Dependency Injection 依赖注入-->在当前类需要用到其他类的对象,用spring为我们提供,我们只需要在配置文件中说明,依赖关系的维护:称为依赖注入

  即在创建了一个对象中含有另外一个类对象,此时就需要依靠spring框架给该对象进行对象实例的注入。以避免在该类中进行对象创建增加耦合度

  注入方式:

    使用构造函数提供:

      bean内部使用标签<constructor-arg>:

      
      index,name,type:都是指定赋值的对象
      value:是用于提供基本数据类型和String的数据
      ref:用于指定其他bean类型的数据.指bean容器中有的

    使用set方式提供:

      

      bean内部使用property标签:
      name:是set方法名称
      value:值

    使用注解提供:

      

      用于创建对象的注解:
        @Component:用于把当前类对象存入spring容器中 value属性指定id(默认为当前类名,首字母小写)
        @Controller(表现层),@Service(业务层),@Repository(持久层) 和Component注解的属性和作用一样,是spring框架对三层对象提供
      用于注入数据的注解:
        @Autowired:自动按照类型注入,只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功
          出现的位置:可以是变量上,也可以在方法上
          多个匹配时:会根据变量名称匹配id,若不匹配报错
        @Qualifier:在按照类型注入的基础之上再按照名称注入.在给类成员注入时不能单独使用,但在个方法参数注入时可以
          属性:value(注入的id)
        @Resource:直接按照bean的id注入
          属性:name(注入的id)
        以上三个都只能注入bean对象,基本类型和String类型无法使用上述注解实现
        集合:只能通过XML来注入

        @Value:用于注入基本类型和Stirng类型
          属性:value(用于指定值,可以用spring中的SpEl(也就是spring的el表达式))

 

转载于:https://www.cnblogs.com/LTBblogs/p/10864772.html

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

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

相关文章

选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......

(spring boot vue&#xff09; 1、新增-选择日期-点击保存-报错&#xff1a;报错信息 "Invalid JSON input: Cannot deserialize value of type java.util.Date from String "2020-07-05T16:00:00.000Z": not a valid representation (error: Failed to pars…

个人冲刺10

1.昨天做了界面整体优化。 2.今天打算了解一下组成员的情况。 3.整体界面优化没有什么问题。转载于:https://www.cnblogs.com/Evak/p/10936847.html

新增或编辑保存时出错后,页面无法再次编辑

新增或编辑保存时出错后&#xff0c;页面无法再次编辑&#xff0c;除非关闭新增或编辑弹窗&#xff0c;重新打开新增或编辑页面&#xff0c;否则无法编辑 &#xff0c;如下图&#xff1a; 解决方案 在新增方法之前定义loading参数&#xff0c;在调用后台服务之前先使用loading…

avue下拉框中属性可以显示,但不能选中

1、avue下拉框中属性可以显示&#xff0c;但不能选中 追其原因&#xff0c;我对表单分组了&#xff0c;下拉框放在了group组内的column组里面&#xff0c;导致层数过多&#xff0c;产生死循环的bug 2、解决方法&#xff1a; 取消分组&#xff0c;把所有的属性放到column属性里…

1-4 无监督学习(Unsupervised Learning)

无监督学习定义&#xff1a; 【无监督学习】中没有任何的标签或者是有相同的标签或者就是没标签。所以我们已知数据集&#xff0c;却不知如何处理&#xff0c;也未告知每个数据点是什么。别的都不知道&#xff0c;就是一个数据集。你能从数据中找到某种结构吗&#xff1f;针对数…

选择日期保存后日期变成前一天(avue date)

1、问题&#xff1a;选中日期&#xff0c;保存&#xff0c;日期变成前一天 {label: 生产日期,prop: esDate,type: date,}, 2、解决&#xff1a;&#xff08;avue的官方文档&#xff09; {label: 生产日期,prop: esDate,type: date,valueFormat: yyyy-MM-dd}, 只需要加 value…

IDEA配置tomcat部署web项目时没有artifacts

重命名module可能会出现此问题 会有提示没有artifacts&#xff0c;点击Fix&#xff0c;添加artifacts以解决 debug运行可能会报错&#xff0c;查看日志说1099端口号已被使用 命令行&#xff1a; netstat -ano | find "1099" tasklist | find "840" 840是LI…

v-region 地址组件无法回显问题(选择地址保存后,打开编辑,发现刚才选择的地址【省市县乡】信息消失,信息不回显)

(Avue) 1、问题 v-region 地址组件无法回显(选择地址保存后&#xff0c;打开编辑&#xff0c;发现刚才选择的地址【省市县乡】信息消失&#xff0c;信息不回显) 选择好省市县乡后&#xff0c;保存&#xff0c;再次编辑&#xff0c;发现如下&#xff1a; 2、解决方案&#xff…

JavaScript中一个对象数组按照另一个数组排序

JavaScript中一个对象数组按照另一个数组排序 需求&#xff1a;排序 const arr1 [33, 11, 55, 22, 66];const arr2 [{age: 55}, {age: 22}, {age: 11}, {age: 66}, {age: 33}]数组arr2中每项都是一个对象&#xff0c;对象中age属性 数组arr1中的项将arr2数组根据对象的age值…

【JS】逻辑运算符 非! 与 或||(处理对象时注意)

转自&#xff1a;https://www.cnblogs.com/linxiong945/p/4135554.html JS中的逻辑运算符在处理布尔值的判断时&#xff0c;和其他语言没有什么不同&#xff0c;不过在处理对象时&#xff0c;就需要好好梳理记忆下了。 逻辑非&#xff08;!&#xff09; 如果一个操作数是一个对…

什么是跨域(定义理解错误)

什么是跨域 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 当前页面url 被请求页面url 是否跨域 原因http://www.test.com/http://www.test.com/index.html 否 同源&#xff08;协议、域名、端口号相同&#xff09;http://www.test.com/ ht…

存储池与存储卷,使用virt-install创建虚拟机

原文链接&#xff1a;https://www.cnblogs.com/zknublx/p/9199658.html 创建存储池 1.建立存储池的目录 mkdir /kvm/images 2.为了安全性&#xff0c;更改目录的所有者&#xff0c;并设置权限 chown root:root /kvm/images chmod 700 /kvm/images 验证一下 ls -a /kvm/images 3…

oracle mysql 常用语句(查询表中某字段有几种类型,及每种类型有多少个数、插入多行、查询前几行)

亲测有效 1、&#xff08;1&#xff09;查询表中某字段有几种类型&#xff0c;及每种类型有多少个数 select DISTINCT name user_name,count(*) num from patient GROUP BY name &#xff08;2&#xff09;查询表中某字段类型共有几种 select count(distinct name) from pat…

程序员修炼之道阅读笔记02

本周阅读了程序员修炼之道&#xff08;从小工到专家&#xff09;的第四章《注重实效的偏执》、第五章《弯曲&#xff0c;或折断》、第六章《当你编码时》的相关内容&#xff0c;对其中一些值得我们学习的地方进行了摘录。 1.在制作任何软件时不免的会遇到很多输入的情况&#x…

SQL中多表查询:左连接、右连接、内连接、全连接、交叉连接

一、左连接&#xff0c;右连接&#xff0c;内连接关系 左连接&#xff1a;左表全部两个表交集&#xff08;①②&#xff09; 右连接&#xff1a;右表全部两个表交集&#xff08;③②&#xff09; 内连接&#xff1a;两个表交集&#xff08;②&#xff09; 二、结合具体例子看…

ORA-00972: identifier is too long问题解决

报错 解决&#xff1a; 查看你写的是否有中文 如果有中文&#xff0c;看是否有引号将中文引起来&#xff0c;用引号引起来后不报错

Linux系统性能查询命令

top命令&#xff08;整机&#xff09;&#xff1a; 可以查看进程的cpu占用率&#xff0c;和内存占用率。uptime 是top的精简版只看整机&#xff0c;不看各进程。 load average: 0.00, 0.00, 0.00 表示系统1分钟&#xff0c;5分钟&#xff0c;15分钟的负载值&#xff0c;如果三…

Alter操作(修改列名,修改列数据类型,增加列,删除列,增加列且设为主键及对默认值操作)

一、mysql &#xff08;增加列&#xff0c;删除列&#xff0c;修改列&#xff1b;增加&#xff0c;删除&#xff0c;修改列的默认值&#xff09; 增加列&#xff0c;删除列&#xff0c;修改列 1、修改列的数据类型 alter table patient modify column mood int2、修改列名 …

Python可视化库matplotlib(基础整理)

https://blog.csdn.net/weixin_39777626/article/details/78598346 绘制基本曲线使用plot函数绘制函数曲线&#xff0c;可以调整plot函数参数配置曲线样式、粗细、颜色、标记等设置坐标轴(1.)spines移动坐标轴(2.)xlim方法设置坐标轴刻度取值范围(3.)xticks,yticks方法设置x,y轴…

GROUP BY和HAVING用法介绍

一、group by 和 having 1、满足“SELECT子句中的列名必须为分组列或列函数”&#xff0c;因为SELECT有group by中包含的列 2、having必须和group by一起用&#xff0c;且在group by后面 3、group by、having、order by的使用顺序&#xff1a;group by 、having、order by …