当前位置: 首页 > news >正文

Spring框架的入门知识点

一、概念

1.一款轻量级的JAVAEE解决方案,众多优秀设计模式的组合;
2.作用(目的):解耦合,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。

3. Spring 的核心思想是:

 IOC:控制反转 和  AOP:面向切面编程

 

4.Spring体系结构:
    核心模块:
        spring-beans、spring-core、

        spring-context、spring-SpEL
    

5.Spring 的依赖注入(DI)方式:

  Setter 注入, 构造注入

 

二、Spring开发步骤 -- 工厂设计模式

 1.搭建环境
    ①引入相关依赖(6个jar包)
    ②引入配置文件  (也就是头文件) 

 

 2.spring相关API

ApplicationContext -- 工厂 -- 工厂设计模式
    ①接口 -- new 实现类   ClassPathXMLApplicationContext
    ②重量级资源 -- 内存多、功能多、线程安全 


3.Spring工厂创建对象的步骤
    I.书写类       User实体类
    II.在Spring配置文件中配置该类的相关信息

<bean id="user" class="com.hp.entity.User"></bean>

   id属性是唯一标识 class属性后面跟该类的全限定名


  III.创建Spring工厂,构建对象

   public class TestFactory {@Testpublic void testFa(){//创建工厂ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//创建对象User user = (User) ac.getBean("user");System.out.println(user);}}


4.spring工厂构建对象的原理

 
    <!--配置User类的相关信息-->
    <bean id="user" class="com.hp.entity.User"></bean>
    原理:I.读取配置文件,获取该类的全限定名
             com.hp.entity.User
             II.获取类对象
             Class userclazz = Class.forName("com.hp.entity.User");
             II.创建类的对象
             Object object = userclazz.newInstance();
             User user = (User)object;

 

三、spring注入 

注入:通过spring的配置文件,为对象的属性进行赋值

1.set注入:
    原理:通过调用该类的set方法进行属性的注入
    注意:一定要为该类提供set方法


2.jdk类型

 I.8种基本数据类型+string<bean id="user" class="com.hp.entity.User"><property name="id"><value>1</value></property><property name="username"><value>小王</value></property><property name="password"><value>123456</value></property></bean>II.数组<!-- 数组赋值 --><property name="array"><array><value>1</value><value>2</value><value>3</value></array></property>    III.List类型<!-- list赋值 --><property name="list"><list><value>小黑</value><value>小白</value><value>小花</value><value>小黑</value></list></property>IV.Set类型<!-- set赋值 --><property name="set"><set><value>小黑</value><value>小白</value><value>小花</value><value>小黑</value></set></property>V.Map类型<!-- Map类型赋值 --><property name="map"><map><entry><key><value>1</value></key><value>小黑</value></entry><entry><key><value>2</value></key><value>小白</value></entry><entry><key><value>3</value></key><value>小花</value></entry></map></property>VI.Properties(特殊的Map集合 key和value都是String类型)<!-- Properties类型 --><property name="props"><props><prop key="username">小黑</prop><prop key="password">123456</prop></props></property>

 

3.自建类型注入

  <!-- 配置UserDaoImpl的相关信息 --><bean id="userDao" class="com.hp.dao.UserDaoImpl"></bean><!-- 配置UserServiceImpl的相关信息 --><bean id="userService" class="com.hp.service.UserServiceImpl"><property name="userDao" ref="userDao"></property><!-- ref属性:指向UserDAO实现类对象的ID --></bean>

 

我们也可以提高依赖的效率,我们可以使用接口,这不仅解耦了代码,让依赖关系由实体类变成了抽象的依赖,依赖关系就解开了,同理,这也就解释到了,为什么我们java中的三层架构中药用到接口了。

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

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

实现批量自动部署Linux操作系统--UP楠哥

#实战描述&#xff1a; UPWEN公司所服务的用户IT环境中有很多的Linux系统&#xff0c;品种也五花八门&#xff0c;有RHEL、Centos、OpenSUSE甚至还有测试环境使用的RockyLinux。当有大量的计算机需要同时安装操作系统需求的时候&#xff0c;如果通过光驱的方式一个个安装&#…...

HDU 1536 S-Nim

1536 #include<bits/stdc.h> using namespace std; int s[110],sg[10010]; int k; int SG(int x){if(sg[x]!-1)return sg[x];bool vis[110];memset(vis,0,sizeof(vis));for(int i0;i<k;i){if(x>s[i]){SG(x-s[i]);vis[sg[x-s[i]]]1;}}for(int i0;;i){if(!vis[i]){...

Redis 内存淘汰机制

Redis 内存淘汰机制 【问题一】 过期字典的方法很好&#xff0c;但还是有可能会出问题。因为定期删除和惰性删除还是有可能造成大量过期的 key 没被删除&#xff0c;堆积在内存中。非常容易就 内存溢出了 Out of memory。 【问题二】 如何保证 Redis 中的数据都是热点数据 &am…...

2021年Java开发爆款推荐!docker部署tomcat

一.java基础面试知识点 java中和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别 探探对java多态的理解 String、StringBuffer、StringBuilder区别 什么是内部类&#xff1f;内部类的作用 抽象类和接口区别 抽象类的意义 抽象类与接口的应用…...

常见各类算法

冒泡&#xff1a; 1、依次比较相邻的元素&#xff0c;如果第一个比第二个大&#xff0c;则交换位置&#xff1b; 2、从第一个交换到最后一个时&#xff0c;最后的元素一定是最大的&#xff1b; 3、然后对所有的元素都执行此操作O(n^2)快排&#xff1a; 1、选择一个基准&#…...

错题小笔记13——序列化、serialVisionUID的作用

序列化&#xff1a;将数据结构转换称为二进制数据流或者文本流的过程。序列化后的数据方便在网络上传输和在硬盘上存储。 反序列化&#xff1a;是将二进制数据流或者文本流转换称为易于处理和阅读的数据结构的过程。本质其实还是一种协议&#xff0c;一种数据格式&#xff0c;…...

HTTP与HTTPS的区别

HTTP与HTTPS的区别 HTTP &#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09; HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发…...

阿里P8大牛亲自讲解!java静态变量和实例变量

Redis主从复制 概念 Redis的主从复制概念和MySQL的主从复制大概类似。一台主机master&#xff0c;一台从机slaver。master主机数据更新后根据配置和策略&#xff0c;自动同步到slaver从机&#xff0c;Master以写为主&#xff0c;Slave以读为主。 主要用途 读写分离&#xff1…...

5. 断路器hystrix dashboard turbine

hystrix使用 feign中使用 hystrix feign:hystrix:enabled: true #必须配置Component public class EurekaClientHystrix implements EurekaClientFeign{}使用feign配置了&#xff0c;这些&#xff0c;即可进行回退 Feign 的起步依赖中已经包含Hystrix依赖&#xff0c;所以只…...

使用朴素贝叶斯过滤垃圾邮件

示例&#xff1a;使用朴素贝叶斯对电子邮件进行分类(1) 收集数据&#xff1a;提供文本文件。(2) 准备数据&#xff1a;将文本文件解析成词条向量。 (3) 分析数据&#xff1a;检查词条确保解析的正确性。(4) 训练算法&#xff1a;使用我们之前建立的trainNB0()函数。(5) 测试算法…...

Angular中NgOnInit和Constructor方法之间的主要区别

参考链接&#xff1a;https://chudovo.com/main-differences-between-ngoninit-and-constructor-methods-in-angular/...

redis中的RDB和AOF

redis提供两种方式进行持久化&#xff0c;一种是RDB持久化&#xff08;原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化&#xff09;&#xff0c;另外一种是AOF持久化&#xff08;原理是将Reids的操作日志以追加的方式写入文件&#xff09;。那么这两种持久化方…...

阿里云泄露信息、腾讯视频崩了,抖音使用IPFS存储!IPFS将开启一个更安全的互联网存储时代!

西部世界XLMidsummer了解到&#xff0c;近日&#xff0c;网络流传一份浙江省通信管理局7月5日对投诉人的答复函&#xff0c;核实称此前阿里云计算有限公司未经用户同意擅自将用户留存在的注册信息泄露给第三方合作公司。8月23日&#xff0c;浙江省通信管理局相关负责人独家回应…...

djanog导出csv文件

def xlsx_response(x_io):res HttpResponse()res["Content-Type"] "text/csv"res["Content-Disposition"] filename"aa.xlsx"res.write(x_io.getvalue())return resif query_params.get(export):values_list_order queryset.valu...

post与get请求的区别以及转发和重定向的区别

post 与get请求的额区别 比较角度GETPOST请求的数据是否在url上显示会 url?参数名参数值&#xff08;不安全&#xff09;不会 在Form Data中&#xff08;安全&#xff09;是否是表单的默认提交方式是不是执行效率高低&#xff08;相对于GET&#xff09;提交数据大小最大是102…...

弘辽科技:成为拼多多商家要什么要求?收费吗?

现在也有不少人想要入驻拼多多&#xff0c;但是想要成为拼多多的商家也需要满足对应的要求&#xff0c;同时也想要了解成为拼多多商家是否需要收费&#xff0c;我马上就来给各位卖家们介绍。 拼多多商家入驻平台分四种店铺&#xff0c;这里小编介绍一下旗舰店、专营店入驻基本条…...

Xshell中鼠标选中内容自动换行ctrl+c解决办法

之前一直使用xshell来调试嵌入式终端&#xff0c;觉得蛮好用的&#xff0c;在昨天&#xff0c;突然发现&#xff0c;莫名的就出现ctrlc的命令&#xff0c;经分析&#xff0c;当使用鼠标选中内容后就自动出现&#xff0c;仔细思考这一两天的过程&#xff0c;并没有得到好的信息&…...

超11万字整理完k8s的核心组件pod全部功能详解,理论代码超详细,建议跟着做一遍实验【含 label 标签使用】【1】

文章目录说明【必看】第二篇文章标题和链接第二篇文章标题和链接第三篇文章标题和链接创建及删除pod创建一个pod-1的文件夹和命名空间镜像准备【node节点执行】创建pod【虚拟机】方式1&#xff1a;命令行的方式【不建议】默认创建加imagePullPolicy参数创建说明方式2&#xff1…...

品牌应该如何把握抖音电商的红利:深度拆解花西子如何通过抖音电商一年销售1亿+

最近抖音电商正在逐渐起势&#xff0c;前一阵子老赵去参加了抖音的电商大会和千川大会&#xff0c;从这两个会的火爆程度我们就可以看出&#xff0c;越来越多的品牌正在涌向抖音电商平台&#xff0c;并且越来越重视这个平台。抖音电商将是品牌们的新战场&#xff0c;这个平台让…...

python flask实战订餐系统微信小程序-42使用可视化的百度开源ueditor编辑展示工具

B站配套视频教程观看 使用可视化的百度开源ueditor编辑展示工具 使用插件改变描述区域的东西&#xff0c;支持编辑 百度开源ueditor http://fex.baidu.com/ueditor/ 代碼中已經添加了ueditor插件 引入JS 需要包含3个js文件 <script src"{{ buildStaticUrl(/plugi…...

【数据库系统概论(王珊)】第4章——数据库安全性

1、安全性级别 TCSEC将系统划分为四组&#xff08;ABCD&#xff09;七个等级&#xff0c;依次是D、C1、C2、B1、B2、B3、A1。 D级&#xff1a;是最低级别。将一切不符合更高标准的系统均归于D组。如DOS实操作系统中安全标准为D级的典型例子。 C1级&#xff1a;非…...

一句话让spring-boot帮我开启浏览器参数内容协商策略

一句话&#xff1a; 背后的原理&#xff1a; 当我们开启参数协商以后在RequestResponseBodyMethodProcessor里 有个方法 有个writeWithMessageConverter 这里包含消息的读和写操作 进入查看发现&#xff1a; 里面有个获取request的可以接受的类型 继续进入 调用了一个内容协…...

html标签字符,在thymeleaf中非转义显示

html标签字符&#xff0c;在thymeleaf中非转义显示 对于“非转义文本”使用 th:utext th:utext"${lastAnnouncement.content}"th:text和 th:utext效果对比&#xff1a; <p><strong>This is my textarea to be replaced with CKEditor 4.</strong&g…...

djanog导出csv文件

def xlsx_response(x_io):res HttpResponse()res["Content-Type"] "text/csv"res["Content-Disposition"] filename"aa.xlsx"res.write(x_io.getvalue())return resif query_params.get(export):values_list_order queryset.valu...

ubuntu系统中git多账户配置

目的 为了在同一台电脑上同时管理多个git账户且不产生冲突&#xff0c;需要进行如下配置。 配置过程 生成多个账号的私匙公匙 运行指令ssh-keygen -t rsa -C email&#xff0c;创建sshkey&#xff0c;email为自己的邮箱&#xff0c; 命名为id_rsa_1&#xff0c;密码设置为1…...

Docker容器出现exited(0)状态解决办法

Docker容器出现exited&#xff08;0&#xff09;状态解决办法一、情况1&#xff1a;docker run时出现二、情况2&#xff1a;重启服务器后出现1.具体实例2.永久解决3.注意事项一、情况1&#xff1a;docker run时出现 步骤一、docker rm 容器id 将容器删除 步骤二、docker rmi 镜…...

android - FlutterActivity MethodChannel和FlutterView

android - FlutterActivity MethodChannel和FlutterView 因此&#xff0c;大约4个月前&#xff0c;我编写了Flutter应用程序。现在&#xff0c;我想做一个小小的更改&#xff0c;但是我不能再编译应用程序了&#xff0c;因为GeneratedPluginRegistrant.registerWith(this)不再…...

Android学习笔记————关于使用RecyclerView进行替代ListView

写在前面 本文章只作为本人学习后的学习总结&#xff0c;欢迎各位大佬进行指正&#xff0c;切勿将其作为教程进行学习。 开发步骤 RecyclerView与ListView开发类似 大体可以分为四部 &#xff08;添加库依赖&#xff09;----->编辑数据------->创建适配器------>设…...

innodb存储引擎之:表空间

概览 https://www.mubucm.com/doc/5X-MdVzKDKB 为什么innodb设计了“区”的概念 如果以页为单位来分配存储空间&#xff0c;B树索引中同一层级的双向链表相邻的两个页之间的物理位置可能离得非常远&#xff0c;会导致遍历索引的时候&#xff0c;无法使用顺序I/O&#xff0c;所…...

Python面向对象封装案例——士兵突击

面向对象封装案例 II 目标 士兵突击案例身份运算符 封装 封装 是面向对象编程的一大特点面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中外界 使用 类 创建 对象&#xff0c;然后 让对象调用方法对象方法的细节 都被 封装 在 类的内部 一个对象的 属性…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

mysql半同步 rpo_从单体式向分布式演进 金山云打造更高性能的数据库DragonBase

在信息快速发展多元化的今天&#xff0c;数据库作为现代信息技术领域的三大核心基础之一&#xff0c;重要性愈发明显。随着传统商业数据库产品的热度逐渐下降&#xff0c;更多的企业级用户逐渐转向云分布式数据库及开源数据库产品&#xff0c;云化部署模式正在逐渐超越传统部署…...

盘文件云存储——金山快盘

废话就不多说了&#xff0c;开始。。。 百科片名 目录 快盘简介品产特色费免15G空间跨台平同步团队作协办公高强度加密本版分析Windows本版网页本版iPhone本版iPad本版Android本版Mac本版全安十问展发程历开展快盘简介品产特色费免15G空间跨台平同步团队作协办公高强度加密本版…...

三英战吕布:360与金山、腾讯、百度之间的恩怨情仇

三英战吕布&#xff1a;360与金山、腾讯、百度之间的恩怨情仇 近日&#xff0c;腾讯金山等企业发布联合声明反对360不正当竞争&#xff0c;而360称腾讯发声明是为转移视线&#xff0c;将公布更多证据。这是继《狗日的腾讯》的“攻击谩骂”后&#xff0c;网络市场竞争又一白炽化…...

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A&#xff1a;期末考试题目描述题目讲解代码B&#xff1a;月份题目描述题目讲解代码C&#xff1a;打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F&#xff1a;挖金子题目描…...

小米联合金山云发布“1KM边缘计算” 携手布局“云+边缘”新赛道

金山云CEO王育林&#xff1a;“今天是一个特别特别特别的发布会&#xff0c;因为小米每次发布会都有硬件&#xff0c;而这次是和我们金山云联合发布“1KM边缘计算”解决方案&#xff0c;打造“云亿级终端”边缘计算模式。当然我们和小米的合作属于厚积薄发&#xff0c;是之前一…...

金山新CEO张宏江:后悔从微软出来得太晚

转自&#xff1a;http://tech.qq.com/a/20120423/000176.htm 金山新CEO张宏江&#xff1a;后悔从微软出来得太晚 金山软件CEO张宏江(微博) 时光匆匆如白驹过隙。2011年10月24日&#xff0c;时任微软亚洲研发集团CTO兼微软亚洲工程院院长的张宏江空降金山软件&#xff0c;以“归…...

奉贤金山房价上周破万 沪新盘仍少量多批

仅崇明未进万元区间&#xff0c;沪上新盘仍现“少量多批” 上周上海楼市供应量环比大降&#xff0c;多数楼盘不执行商品房预售“3万平方米”政策是主因&#xff0c;而郊区房价攀高将住宅成交均价拉升成为新现象。 <script src"http://find.online.sh.cn/js.ng/siteonl…...

五年打磨 金山云分布式数据库DragonBase为金融行业提供可靠服务

近年来&#xff0c;随着金融业务的快速发展&#xff0c;基于海量数据的高并发实时交易&#xff0c;在保障安全可靠的基础上要求数据库具备弹性扩展和高可用能力&#xff0c;推动传统集中式关系型数据库向分布式的云数据库迁移。同时在业务和数据迁移到分布式数据库的过程中也面…...

阻击周鸿祎:马化腾再度增持金山网络

<wbr><wbr>2013年6月25日&#xff0c;笔者通过金山网络相关部门负责人确认&#xff0c;金山软件与腾讯两家公司分别与金山网络达成股份认购协议&#xff0c;二者将斥资5220万美元认购金山网络的B系列优先股。</wbr></wbr> <wbr><wbr><w…...