关于MVC框架和spring
简介
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性
控制器
接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
spring
spring是一个非常优秀的java框架,其目标是为了简化java企业级开发,spring出来已经十几年了,这期间也一直围绕着这个目标在进行,springmvc、springboot、springcloud,这些技术也都是围绕着简化开发的目标在努力,spring除了不能帮助我们实现业务逻辑代码之外,其他的事情spring都尽量去帮我们简化了,使用spring可以帮助我们节约大量开发时间。
1.IOC控制反转,是一种设计理念,将对象创建和组装的主动控制权利交给了spring容器去做,控制
的动作被反转了,降低了系统的耦合度,利于系统维护和扩展,主要就是指需要使用的对象的组装
控制权被反转了,之前是自己要做的,现在交给spring容器做了。
2. DI依赖注入,表示spring容器中创建对象时给其设置依赖对象的方式,通过某些注入方式可以让系统更灵活,比如自动注入等可以让系统变的很灵活
3. spring容器:主要负责容器中对象的创建、组装、对象查找、对象生命周期的管理等等操作
Bean对象
由spring容器管理的对象统称为Bean对象。Bean就是普通的java对象,和我们自己new的对象其实是
一样的,只是这些对象是由spring去创建和管理的,我们需要在配置文件中告诉spring容器需要创建哪些bean对象,所以需要先在配置文件中定义好需要创建的bean对象,这些配置统称为bean定义配置元数据信息,spring容器通过读取这些bean配置元数据信息来构建和组装我们需要的对象。
Spring容器使用步骤
- 引入spring相关的maven配置
- 创建bean配置文件,比如bean xml配置文件
- 在bean xml文件中定义好需要spring容器管理的bean对象
- 创建spring容器,并给容器指定需要装载的bean配置文件,当spring容器启动之后,会加载这些配置文件,然后创建好配置文件中定义好的bean对象,将这些对象放在容器中以供使用
- 通过容器提供的方法获取容器中的对象,然后使用
- spring容器中具有代表性的容器就是BeanFactory接口,这个是spring容器的顶层接口,提供了容器最基本的功能。
BeanFactory接口
常用的几个方法
//按bean的id或者别名查找容器中的bean
Object getBean(String name) throws BeansException
//这个是一个泛型方法,按照bean的id或者别名查找指定类型的bean,返回指定类型的bean对象
T getBean(String name, Class requiredType) throws BeansException;
//返回容器中指定类型的bean对象
T getBean(Class requiredType) throws BeansException;
//获取指定类型bean对象的获取器
ObjectProvider getBeanProvider(Class requiredType);
ApplicationContext接口
这个接口继承了BeanFactory接口,所以内部包含BeanFactory所有的功能,并且在其上进行了扩展,增加了很多企业级功能,比如AOP、国际化、事件支持等等。
ClassPathXmlApplicationContext类
这个类实现了ApplicationContext接口,注意一下这个类名称包含了ClassPath Xml,说明这个容器类可以从classpath中加载bean xml配置文件,然后创建xml中置的bean对象
AnnotationConfigApplicationContext类
这个类也实现了ApplicationContext接口,bean的定义支持xml的方式和注解的方式,当我们使用注解的方式定义bean的时候,就需要用到这个容器来装载了,这个容器内部会解析注解来构建构建和管理需要的bean。
注解的方式相对于xml方式更方便一些.
Druid
Druid的主要功能如下:
是⼀个⾼效、功能强⼤、可扩展性好的数据库连接池。
可以监控数据库访问性能。
数据库密码加密
获得SQL执⾏⽇志
扩展JDBC
关于MVC框架和spring相关推荐
- 自己手写一个Spring MVC框架
想要了解Spring MVC框架的原理,探究框架是如何设计的,不错的学习方式是阅读源码,然后自己手写一个框架.本文带领大家简化的手写一个Spring MVC框架. Spring框架对于Java后端程序 ...
- 【Java学习路线之JavaWeb】Spring MVC框架入门教程
文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...
- 2022/5/3 Spring MVC框架
目录 1丶什么是MVC 1.1丶回顾MVC 1.2丶MVC设计模式 1.3丶SpringMVC架构 1.4丶概述 1.5丶中心控制器(DispatcherServlet) 1.6丶SpringMVC执 ...
- 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)
超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...
- Java Spring MVC框架 VII
Java Spring MVC框架 VII Spring MVC小结 1.小结 ● 关于Spring MVC框架,你应该(1/5): – 理解Spring MVC框架的作用 – 接收请求,响应结果,处 ...
- Struts和SpringMVC两种MVC框架比较
基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC框架 ...
- 框架:spring、springmvc、springboot
先来说说spring.springmvc.springboot的关系. spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架 ...
- osgi框架和spring区别_最新100道大厂高频spring面试题附答案
简介 这里是由多位互联网大厂架构师面试整理的出现频率最高的spring相关面试题,并为大家整理了完整的答案,赶紧收藏起来吧! 100道spring高频面试题 Spring概览 1.Spring是什么? ...
- Spring boot (6)---SpringMVC框架和spring Boot的区别
SpringMVC框架和spring Boot的区别 1.我们知道Spring是一个一站式框架功能十分强大,就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是S ...
最新文章
- python asyncio tcp server_Python 3.4 中新的 asyncio : Servers、Protocols 和 Transports
- python request timeout是什么意思_request timeout是什么意思
- 2007年下半年软考:网络工程师考试试题分析
- 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先
- mysql 字符串转时间yymmdd_mysql 日期和时间格式转换实现语句 | 很文博客
- Pytorch(二) --梯度下降法
- matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
- B	Graph(异或最小生成树)
- 普通话/汉语发音口型大全
- 安装kali linux 2017.1 【二、安装VMware-tools 以及相关问题处理】
- HISTFILESIZE与HISTSIZE的区别
- ElementUI项目优化上线
- azure db 设置时区_使用Azure Cosmos DB开始您的旅程
- 《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
- Spring源码深度解析百度网盘下载
- android studio运行项目快捷键,Android Studio 快捷键大全
- adb命令检测手机bl有无上锁_用adb命令解bl锁
- Java开发的学生考勤系统多人脸识别签到二维码签到
- 【前端】零基础带你入门前端< 三 > —— 实现手机通讯录(微信通讯录)等
- 【CF833D】Red-Black Cobweb
热门文章
- mysql中text格式化_mysql中char,varchar,text
- url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解
- nginx https 访问http_Nginx之Http模块系列之访问控制模块
- python接口测试覆盖率统计_从 jacoco 报告数据分析,python 脚本实现增量覆盖率统计...
- 放在每个定义前的html语言,html基础
- 黑金花大理石_黑色系大理石的首选——黑金花
- 字体 素材_最新2019毛笔书法字体素材合集!自创字体解决版权,甲方看都说好...
- 计算机应用属不属于科技股,哪些股票属于科技股
- 九、Docker快速搭建Elastic Stack(上篇)
- 二十八、Node.js中的RESTful API和接口设计