Spring框架

什么是Spring

Spring是分层得javaSE轻量级开源框架,以IOC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming面向切面编程为内核)

Spring是众多优秀设计模式得组合(工厂,单例,代理,适配器,包装器,观察者)

分层:

JavaEE的三层结构:web层、业务层、数据访问层(持久层、集成层)

Struts是web层基于MVC设计模式框架

Mybatis,Hibernate是持久的一个ORM的框架

一站式:

Spring框架有对三层的每层解决方案

web层:Spring MVC

持久层:JDBC Template

业务层: Spring的Bean管理

Spring的好处:

方便解耦,简化开发

Spring就是一个大工厂,可以将所有对象和依赖关系维护,交给Spring管理

AOP编程的支持

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试

Spring对Junit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架 ​ Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、

Hibernate、MyBatis、Quartz等)的直接支持

Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,降低JavaEE API的使用难度

1、创建Bean的三种方式

Bean元素:使用钙元素描述需要Spring容器管理的对象

class属性:被管理对象的完整类型名

name属性:给被管理的对象起个名字,获得对象时根据该名称获得对象

id属性:与name属性的作用相同

<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--使用默认的构造方法创建--><bean id="UserService" class="com.wm.impl.UserServiceimpl"></bean><!--使用普通的工厂中的方法创建对象--><bean id="userServiceFactory" class="com.wm.Factory.UserServiceFactory"></bean><!--使用工厂中的静态方法创建--><bean id="userService" factory-bean="userServiceFactory" factory-method="getUserService"></bean>
<bean id="userService" class="com.wm.Factory.UserServiceStaticFactory" factory-method="getUserService"></bean></beans>

理解:

这三种创建的方式的各有特点,也都有相似的地方,最重要的是理解属性的意思,id是指管理对象的名字,其实指的就是在我们测试的时候调用的对象的名字,

class是我们被管理对象的名字,也就是我们new的类,其中factory-bean 是指静态方法中的类名,factory-method见名知意指的是这个类下的方法,然后后期在测试的时候就可以通过id名直接进行类的实例化,不用再new对象,这也是我们使用Spring框架的意义!!!

2、Spring中的依赖注入

依赖注入: 能注入的数据: 基本类型和String 其他bean类型(在配置文件中或者注解配置过的bean) 复杂类型/集合类型

注入的方式:

  • 第一种:使用构造函数提供

  • 第二种:使用set方法提供

  • 第三种:使用注解提供

构造方法注入

使用的标签:constructor-arg 标签出现的位置:bean标签的内部

标签中的属性: type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型 index:用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置是从0开始 name:用于指定给构造函数中指定名称的参数赋值

value:用于提供基本类型和String类型的数据 ref:用于指定其他的bean类型数据。它指的就是在spring的Ioc核心容器中出现过的bean对象

优势: 在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功。 弊端: 改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供。

set方法注入

涉及的标签:property 出现的位置:bean标签的内部

标签的属性: name:用于指定注入时所调用的set方法名称 value:用于提供基本类型和String类型的数据 ref:用于指定其他的bean类型数据。它指的就是在spring的Ioc核心容器中出现过的bean对象

优势: 创建对象时没有明确的限制,可以直接使用默认构造函数 弊端: 如果有某个成员必须有值,则获取对象是有可能set方法没有执行。

复杂类型的注入

list array set map propertioes等结构集合的注入

<?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">
<bean id="carBean" class="com.wm.pojo.Car"><property name="cname" value="法拉利"></property>
</bean>
<bean id="user" class="com.wm.pojo.User"><property name="id" value="1002"></property><property name="name" value="rose"></property><property name="password" value="123"></property><property name="car" ref="carBean" ></property>
</bean><bean id="collectionDemo" class="com.wm.pojo.CollectionDemo"><!--数组--><property name="arr"><array><value>123</value><value>213</value><value>123</value></array></property><property name="list" ><!--list集合 有序可重复--><list><value>jack</value><value>jak</value><value>tom</value><ref bean="user"></ref></list></property><property name="set"><!--set集合 无序不可重复--><set><value>jack</value><value>jak</value><value>tom</value><ref bean="user"></ref></set></property><property name="map"><!--map集合是以键值对得形式存储--><map><entry key="username" value="jack"></entry><entry key-ref="user" value-ref="user"></entry></map></property><property name="properties"><!--properties类对象--><props><prop key="username">root</prop><prop key="password">123456</prop><prop key="url">jdbc:mysql:///db_name</prop><prop key="DriverClassName">com.mysql.cj.jdbc.driver</prop></props></property></bean>
</beans>

最后题诗一首

秋名山上行人稀

几辆赛车较高低

当年车技今犹在

不见当年老司机

Spring的简单入门相关推荐

  1. SpringBoot + Spring Security 简单入门

    这篇文章主要介绍了SpringBoot + Spring Security 简单入门 Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考 ...

  2. Spring Batch简单入门(四) - Job启动与监控

    接上一章,本章我们介绍Job的启动与监听. Running a Job Spring Boot默认支持自动启动已配置好的Job,我们可以通过配置项**spring.batch.job.enabled= ...

  3. Spring AOP简单入门学习

    Spring AOP 1.主要内容: 2.代理模式 ​ 代理模式在 Java 开发中是⼀种⽐较常⻅的设计模式.设计⽬的旨在为服务类与客户类之间插⼊其他功能,插⼊的功能对于调⽤者是透明的,起到伪装控制的 ...

  4. 【java开发系列】—— spring简单入门示例

    回顾 1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控 ...

  5. Spring Data Querydsl-JPA 的简单入门笔记

    Spring Data Querydsl-JPA 的简单入门笔记 一. Querydsl面试常识问题 1.Querydsl是什么? 二.简单项目使用 1.pom依赖 2.新增插件,自动生成Q版实体类: ...

  6. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  7. spring social_Spring Social入门–第2部分

    spring social 几周前,我写了一篇文章,展示了我认为可以使用Spring Social编写的最简单的应用程序. 该应用程序读取并显示了Twitter用户的公共数据,并被编写为Spring ...

  8. Spring Data Solr入门

    Spring Data Solr是Spring Data项目的扩展,该项目旨在简化Apache Solr在Spring应用程序中的使用. 请注意,这不是Spring(数据)或Solr的简介. 我认为您 ...

  9. boot入门思想 spring_(第一讲)Spring Initializr-快速入门Spring Boot的最好选择

    1讲:Spring Initializr-快速入门Spring Boot的最好选择 Spring Initializr [http://start.spring.io/]是引导你快速构建Spring ...

最新文章

  1. 利用Landsat8 进行利用土地分类
  2. Makefile注意点总结
  3. 连接mysql次数_matlab2020b通过JDBC连接mysql8.0.22
  4. 10.02 T3 打表找递推式+十进制快速幂 九校联考凉心模拟DAY1T1
  5. JZOJ 5444. 【NOIP2017提高A组冲刺11.2】救赎
  6. stm32cubeide外部中断_【STM32】HAL库 STM32CubeMX教程三----外部中断(HAL库GPIO讲解)
  7. Apache Camel中的短重试与长重试
  8. Java学习:类的封装、继承和多态
  9. Statement returned more than one row, where no more than one was expected
  10. C#.NET高级面试题
  11. Kubernetes (1.6) 中的存储类及其动态供给
  12. ContentProvider中的数据库的生成时机以及ContentResolver的insert()方法总结
  13. Visio模具与模版
  14. CF1427E Xum
  15. 音频格式处理--SOX
  16. nginx proxy_temp 文件夹权限问题
  17. matlab模拟硅中的点缺陷,硅中的杂质和缺陷.pdf
  18. android10官方支持机型,Andorid10.0支持哪些手机?附安卓10支持机型介绍
  19. 统计源期刊《国际医学放射学杂志》
  20. 两个月的面试真实经历,告诉大家如何能够进入大厂工作?

热门文章

  1. python链家二手房_python 爬取链家二手房信息
  2. 文思海辉应届生java面试_2019文思海辉面试经验(java程序员,项目经理助理等)
  3. canopen 报文格式_CANopen协议介绍
  4. 该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装,请在“默认应用置”解决办法
  5. 程序猿最讨厌康熙的哪个儿子?
  6. 菜鸟炒美股(一) (转)
  7. Android Studio跳转到新的activity时出现“很抱歉,xxx已停止运行“
  8. 目标人脸检测与识别(计算机视觉)
  9. 从IPv4到IPv6为什么这么久?IPv5哪里去了?
  10. Facebook投放广告总被拒?教你搞定FB广告投放