Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson
在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是
为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使
用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 使用基本的 JavaBean
来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、
可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 的核心是控制反转
(IoC)和面向切面(AOP)。简单来说,Spring 是一个分层的 JavaSE/EEfull-stack(一站式) 轻量级
开源框架。
Spring涉及到EE开发的三层
WEB 层:Spring MVC.业务层:Bean 管理:(IOC)持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框架2、Spring特点Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理IOC:Inversion of Control 控制反转. 指的是 对象的创建权反转(交给)给 Spring.
作用是实现了程序的解耦合.
IOC :控制反转,将对象的创建权交给了 Spring.
DI :Dependency Injection 依赖注入.需要有 IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依
赖的属性设置进去.
面向对象中类与类之间的关系:
依赖:如B类方法中需要将A类传入继承:is a的关系聚合:has a的关系三、Spring的工厂1、BeanFactory旧版本,调用getBean方法时,才会实例化类
2、ApplicationContext实现了BeanFactory,加载配置文件的时候就会实例化
实现类:
?ClassPathXmlApplicationContext :加载类路径下 Spring 的配置文件.
FileSystemXmlApplicationContext :加载本地磁盘下 Spring 的配置文件.
id :Bean 起个名字. 在约束中采用 ID 的约束:唯一.必须以字母开始,可以使用字母、数字、连字符、
下划线、句话、冒号 id:不能出现特殊字符.
name:Bean 起个名字. 没有采用 ID 的约束. name:出现特殊字符.如果没有 id 的话 , name 可
以当做 id 使用.
bean的作用范围
singleton :默认值,单例的.prototype :多例的.request :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.session :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.globalSession :WEB 项目中,应用在 Porlet 环境.如果没有 Porlet 环境那么 globalSession 相当通过配置标签上的 init-method 作为 Bean 的初始化的时候执行的方法,配置 destroy-method
作为 Bean 的销毁的时候执行的方法。
销毁方法想要执行,需要是单例创建的 Bean 而且在工厂关闭的时候,Bean 才会被销毁.
【无参数的构造方法的方式:】
bean id="bean1" /bean
【静态工厂实例化的方式】
【实例工厂实例化的方式】
2、 Spring 的 Bean 的属性注入1)【构造方法的方式注入属性】
bean id="car" constructor-arg name="name" value="保时捷"/ constructor-arg name="price" value="1000000"/ /bean
如果注入的是对象,value属性要改为ref属性引用另一个 bean 的 id 或 name
2)【set 方法的方式注入属性】
bean id="car2" property name="name" value="奇瑞 QQ"/ property name="price" value="40000"/ /bean
比较常用,需要在类中提供set方法
如果注入的是对象,value属性要改为ref属性引用另一个 bean 的 id 或 name
3) 名称空间 p 的属性注入的方式
Spring2.x 版本后提供的方式
第一步:引入 p 名称空间
第二步:使用 p 名称空间.
普通属性: p:属性名称=””对象类型属性: p:属性名称-ref=””!-- p 名称空间的属性注入的方式 -- bean id="car2" p:name=" 宝 马 7" p:price="1200000"/ bean id="person" p:name=" 思 聪 " p:car2-ref="car2"/
4)SpEL 的方式的属性注入
Spring3.x 版本后提供的方式
SpEL:Spring Expression Language. 语法:#{ SpEL } !-- SpEL 的注入的方式 -- bean id="car2" property name="name" value="#{'奔驰'}"/ property name="price" value="#{800000}"/ /bean bean id="person" property name="name" value="#{'冠希'}"/ property name="car2" value="#{car2}"/ /bean bean id="carInfo" /bean 引用了另一个类的属性 bean id="car2" !-- property name="name" value="#{'奔驰'}"/ -- property name="name" value="#{carInfo.carName}"/ property name="price" value="#{carInfo.calculatePrice()}"/ /bean
5)注入复杂类型
!-- Spring 的复杂类型的注入===================== -- bean id="collectionBean" !-- 数组类型的属性 -- property name="arrs" list value 会希 /value value 冠希 /value value 天property !-- 注入 List 集合的数据 -- property name="list" list value 芙蓉 /value value 如花 /value value 凤姐 /value /list /property !-- 注入 Map 集合 -- property name="map" map entry key="aaa" value="111"/ entry key="bbb" value="222"/ entry key="ccc" value="333"/ /map /property !-- Properties 的注入 -- property name="properties" props prop key="username" root /prop prop key="password" 123 /prop /props /property /bean3、分模块开发
一种:创建工厂的时候加载多个配置文件: ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml"); 二种:在一个配置文件中包含另一个配置文件: import resource="applicationContext2.xml" /import
开发者学院技术图谱不断更新升级中,想要学习更多的亲们抓紧啦~此次与图谱配套的...
12月30日 山东师范大学-阿里云高校认证中心成立暨揭牌仪式于长清湖校区文昌楼108...
今天是 2020 年 02 月 02 日,被称为「千年一遇的对称日」,20200202 正反都一样...
大数据的生命周期分为数据获取(data acquisition)、数据存储(data storage)、数...
4月17日 第十五届中国电子信息技术年会上正式颁发2020年中国电子学会科学技术奖 ...
当网站发展到一定的规模,站长就应该开始考虑要为网站 托管服务器 。通常情况下...
Spring Boot 2.5 新特性有哪些 一个知识点的讲解后续就没有面试题了很烦恼 如何...
11月11日-12日,由中国企业联合会、中国企业家协会主办的“2020中国智慧企业发展...
场景介绍 通过CTS云审计服务,完成对公有云帐户对各个云服务资源操作动作和结果...
前言 Apache RocketMQ 作为广为人知的开源消息中间件,诞生于阿里巴巴,于 2016 ...