SSM框架学习-Spring01

1,.Spring介绍

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

2.功能

1).Spring IOC(DI):依赖注入、控制反转

2).Spring AOP:面向切面编程

3).声明式事务

4).Spring Struts Struts2 SpringMVC表现层整合

5).Sring Transction事物整合;

6).SSH(Spring Struts Hibernate)框架

7).SpringMVC Spring 提供表现层整合;

8).SSM(Spring SpringMVC MyBatis)

IOC:

控制反转:它是程序中的之间的关系,不用代码控制,而完全是由容器来控制。

例如:

在之前我们创建对象的时候,需要New 一下,然后后面接一个类,调用构造方法,这样jvm就会给我们生产一个对象,如:Person person =new Person,这时候就产出了person这个对象。但是有了Spring以后,我们只需要在Bean 里面配置好,就可以使用了;

AOP

它利用一种称为”横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块。

所谓”切面”,简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

3.Spring运行时环境

Test:提供的一个测试功能;

Core Container:为核心容器,启动Spring的基本文件;

Beans:负责管理对象

Context:上下文参数。获取外部资源或管理注解等

AOP:实现aop功能需要依赖

Aspects:切面AOP依赖的包

Data Access/Integration:spring封装数据访问层的相关内容

JDBC:Spring对JDBC封装后的代码

ORM:封装了一些持久层框架的代码。例如:Hibernate

Transaction:对应spring-tx.jar,声明式  事务使用

WEB:需要spring完成web相关功能时需要。例如:由tomcat加载spring配置文件时需要有spring-web.jar包

1)容器(Container):Spring当做一个大容器

2)BeanFactory接口,老版本,新版本中ApplicationContext接口,是BeanFactory子接口。BeanFactory的功能在ApplicationContext中都有

3)从Spring3开始把Spring框架的功能拆分为多个jar,2以前就一个jar

4.IOC——控制反转

1) IoC完成的事情是不由new实例化对象,而转交给Spring负责,控制指的是控制类的对象,反转指的是转交给Spring负责。

其作用就是——解耦。

程序员不需要管理对象,解除了对象管理和程序员之间的耦合

javabeansXML配置文件:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- id表示获取到对象标识class 创建哪个类的对象--><bean id="flo" class="com.likui.pojo.Flower"><property name="name" value="牡丹"></property><property name="id" value="1"></property><property name="price" value="2.0"></property><property name="production" value="中国"></property></bean></beans>

java中得到这个对象:

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");Flower flower = ac.getBean("flo",Flower.class);System.out.println(flower.getId()+"  "+flower.getName()+"  "+flower.getPrice()+"  "+flower.getProduction());

结果展示:

2)spring创建对象的三种方式

(1)通过构造方法构建

无参构造方法:默认。

有参构建对象:前提为类中有有参构造器,然后需要在bean中明确配置,

java有参构造器

     public Flower(int id, String name, double price, String production) {this.id = id;this.name = name;this.price = price;this.production = production;}

javabean中顺序写法

    <bean id="flo2" class="com.likui.pojo.Flower"><!--ref引用另一个bean,value引用基本数据类型index代表参数索引,name、type和index可以确定使用哪一个有参构造器,默认为最后一个--><constructor-arg index="0" name="id" type="int" value="0"> </constructor-arg><constructor-arg index="1" name="name"  value="月季"> </constructor-arg><constructor-arg index="2" name="price" type="double" value="2.5"> </constructor-arg><constructor-arg index="3" name="production" value="日本"> </constructor-arg></bean>

(2)实例工厂——需要先创建工厂,才能生产对象

工厂模式:帮助创建类对象,一个工厂可以生产多个对象。

一般模板:

public static INoodles createNoodles(int type) {switch (type) {case TYPE_LZ:return new LzNoodles();case TYPE_PM:return new PaoNoodles();case TYPE_GK:default:return new GankouNoodles();}}

实例工厂具体使用方法:

xml配置文件:利用bean创造工厂类的对象,然后利用这个工厂对象生产相应的对象

  <bean id="factory" class="com.likui.pojo.Factory"></bean><bean id="rose" factory-bean="factory" factory-method="newInstance2"></bean>

java文件:

public class Factory {//普通工厂模式代码public Flower newInstance(String key) {switch (key) {case "Flower":return new Flower();case "rose":return new Flower();default:return null;}}

//使用javabean创建对象

     public Flower newInstance2(){return new Flower(1,"牡丹",3.0,"日本");}}

(3)静态工厂——不需要创建工厂就能产生对象

使用具体方法:将工厂类中的方法使用static来使用,不需要创建工厂对象

xml中配置文件:

<bean id="rose2" class="com.likui.pojo.Factory" factory-method="newInstance3"></bean>

3)对对象属性赋值

(1)利用构造器来对属性赋值(前面已有)

(2)利用set方法来赋值,即利用property来利用set方法来注入,基本数据类型或者String,value放里面或者外面都可以

list、set、map用相应的属性标签来一个个给它们进行赋值

     <bean id="flo" class="com.likui.pojo.Flower"><property name="name" value="牡丹"></property><property name="id" ><value>1</value></property><property name="price" value="2.0"></property><property name="production" value="中国"></property><property name="list"><list><value>1</value><value>2</value><value>3</value></list></property></bean>

5.DI(Dependency injection)——依赖注入

它与IoC功能是一样的,当一个类中需要另一个类的对象时,在类的内部为另一个类对象赋值,就是依赖注入

用法:在类中用property进行赋值时,只需要用ref来引用另一个类的对象,这里的引用对象就是另一个bean

依赖注入类:

public class Factory {private Flower flower;public Flower getFlower() {return flower;}public void setFlower(Flower flower) {this.flower = flower;}}

xml配置文件:

   <bean id="factory" class="com.likui.pojo.Factory"><property name="flower" ref="flo2"></property></bean>

java中使用方法;

     Factory factory=ac.getBean("factory",Factory.class);System.out.println(factory.getFlower().getName());

JavaWeb学习之路——SSM框架之Spring(四)相关推荐

  1. JavaWeb学习之路——SSM框架之Spring(五)

    前情提要请看JavaWeb学习之路--SSM框架之Spring(四)                                         整合Spring和Mybatis框架 1.在项目的 ...

  2. JavaWeb学习之路——SSM框架之Spring(六)

    AOP:面向切面编程 1.介绍--AOP:面向切面编程.正常程序都是从上到下执行相关代码,aop是在纵向执行流程中添加横切面, 从左到右的关系.不需要修改成语原有代码,它将代码动态的切入到类的指定方法 ...

  3. JavaWeb学习之路——SSM框架之SpringMVC(八)

    SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数 前提使用springmvc注解功能,相应配置 ...

  4. JavaWeb学习之路——SSM框架之Mybatis(三)

    数据库配置和相关类创建看上篇:JavaWeb学习之路--SSM框架之Mybatis(二) https://blog.csdn.net/kuishao1314aa/article/details/832 ...

  5. JavaWeb学习之路——SSM框架之SpringMVC(七)

    Spring MVC: 简介:SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦.基于请求驱动指的 ...

  6. JavaWeb学习之路——SSM框架之Mybatis(二)

    1.简介: 框架: 是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义.它是一个半 ...

  7. JavaWeb学习之路——SSM框架之SpringMVC(九)

    SpringMVC跳转.视图解析器和@ResponseBody的用法 1.跳转方式 (1)默认方式字符串内容来转发 (2)设置返回值内容转发 添加redirect:资源路径·  重定向 添加forwa ...

  8. SSM框架:Spring

    SSM框架:Spring 文章目录 前言 一.Spring 1. 简介 2. 优点 3. 组成 4. 拓展 二.IOC理论推导 1. IOC原型引入 2. IOC本质(基本思想) 三.HelloSpr ...

  9. 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)

    超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...

最新文章

  1. Python 机器学习库 Top 10,你值得拥有!
  2. KM(知识管理)与SharePoint Portal
  3. JSP页面的执行过程
  4. pta段错误怎么办_雅思50问 | 07:雅思写作时间不够怎么办?写不完会给分吗?...
  5. java 正则匹配括号是否成对_十分钟学会正则表达式
  6. 美团点评酒旅数据仓库建设实践
  7. 用.net 2003开发Windows CE应用,解决与pocket pc通讯的问题
  8. 大数据之-Hadoop之HDFS_hadoop集群中的安全模式_原理---大数据之hadoop工作笔记0074
  9. NSTimer里的userInfo
  10. refresh-刷新
  11. Eclipse或MyEclipse—在Eclipse或MyEclipse中如何将jar包和相应的源代码关联起来
  12. matlab gui 钢琴,基于MATLAB中的GUI设计的钢琴界面设计并能发声
  13. Canvas 画时钟
  14. DoIP(三)—— 通信流程
  15. 【2022最新Java面试宝典】—— Java集合面试题(52道含答案)
  16. Matlab三次样条插值
  17. selenium+python+eclipse 实现 “问卷星”网站,登录与检查登录示例!
  18. 厚积‘博’发,成就卓越IT人生!
  19. XP教育网用户免费上网
  20. PS2021中使用Nik插件崩溃闪退|Nik Collection不兼容cc2021闪退的解决方法

热门文章

  1. 毕业了,在Python中使用 OpenCV 和K-Means 聚类对毕业照进行图像分割
  2. 五十八、Vue中的计算属性,方法和侦听器
  3. 六,搭建elasticsearch集群搭建
  4. 期末考试前的预习,科目:化工设备与反应器(5)
  5. 深度学习作业(一)手写字体
  6. 一场直播教你深挖6万篇论文+50万学者信息,瓜分10万元奖金
  7. 安装service_identity失败总结
  8. 【PostgreSQL+PostGIS离线安装】2天的踩坑及问题解决经验分享(含安装文件postgresql-9.5.9+postgis-2.2.3+多个依赖及测试SQL)
  9. php mysql服务器配置_配置最新的PHP加MYSQL服务器
  10. debian安vs_debian下使用vs code