一、Spring框架介绍

1、介绍

  Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

2、Spring是什么?

  • Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。
  • Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
  • 轻量——从大小与开销两方面而言Spring都是轻量的。
  • 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。
  • 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。
  • 框架——Spring可以将简单的组件配置、组合成为复杂的应用。

3、Spring的体系结构

  1. 核心容器(Core Container)
  2. 数据访问/集成(Data Access/Integration)层
  3. Web层
  4. AOP(Aspect Oriented Programming)模块
  5. 植入(Instrumentation)模块
  6. 消息传输(Messaging)
  7. 测试(Test)模块

4、Spring的优点

  1. 低侵入式设计,代码的污染极低;
  2. 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺;
  3. Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
  4. Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用;
  5. Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问;
  6. spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

二、Spring核心——控制反转(IOC)

1、控制反转IOC

  • IoC(Inversion Of Control)控制反转,Spring反向控制应用程序所需要使用的外部资源。
  • Spring控制的资源全部放置在Spring容器中,该容器称为IoC容器。

举例:我们创建对象需要通过Person p = new Person创建对象.

Spring是个容器,我们创建对象过程只需要交给Spring就行,在我们用到对象时,spring容器已经帮我们创建好了,直接拿就好,这样做的目的是解耦。

2、耦合与内聚

  • 耦合(Coupling):代码书写过程中所使用技术的结合紧密度,用于衡量软件中各个模块之间的互联程度
  • 内聚(Cohesion):代码书写过程中单个模块内部各组成部分间的联系,用于衡量软件中各个功能模块内部的功能联系
    • 程序书写的目标:高内聚,低耦合
    • 就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却不要那么紧密

3、Spring-IOC入门案例

3.1、 导入相关依赖(5.2.4.RELEASE)

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
3.2、 编写业务层和控制层代码

UserService

package com.why.service;

/**
* @author Laity
* @date 2021年11月16日 9:31
*/ public interface UserService {
void saveUser();
}

UserServiceImpl

package com.why.service.impl;
import com.why.service.UserService; public class UserServiceImpl implements UserService { @Override
public void saveUser() {
System.out.println("Hello,Spring............");
}
}

3.3、 建立配置文件

    在resources建立Spring的配置文件(名字自定义)--------spring.xml

3.4、 配置所需资源(Service)为spring控制的资源

spring.xml

<?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"> <!--
id: bean对象的id,唯一标识。一般是Bean对象的名称的首字母小写。
class: bean对象的类路径。
-->
<bean id="userService" class="com.why.service.impl.UserServiceImpl"/> </beans>

3.5、 表现层(UserController)通过spring获取资源(Service实例)

UserController

package com.why.controller;

import com.why.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* @author Laity
* @date 2021年11月16日 9:41
*/
public class UserController {
public static void main(String[] args) { //获取Spring上下文环境 (加载配置文件)
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); /*
通过getBean方法得到Spring容器中实例化好的Bean对象 (实例化Bean对象)
userService代表的是配置文件中bean标签的id属性值(id标识唯一的bean)
*/
UserService userService = (UserService) context.getBean("userService");
userService.saveUser();
}
}

3.6、 运行结果



结果打印出来,证明Spring为我们创建了对象,我们直接拿就可以。

3.7、 Spring配置文件加载

  文件在resources目录下为例:

  • 根据相对路径加载配置文件
//自动在当前项目下resource目录下找spring.xml配置文件
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");

 - 根据绝对路径加载配置文件

//在电脑磁盘找到并加载配置文件
ApplicationContext ac = new FileSystemXmlApplicationContext("E:\Blog\Spring\Spring-web\src\main\resources\spring.xml");

3.8、 Spring多配置文件加载

  在resources下创建两个service.xml,dao.xml

service.xml

<?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.why.service.impl.UserServiceImpl"/> </beans>

dao.xml

<?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="userDao" class="com.why.dao.UserDao"/> </beans>

 1. 根据相对路径加载多个配置文件

	//配置文件之间用英文的逗号隔开
ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml","service.xml","dao.xml");

 2. 可以通过总配置文件import其他的配置文件

spring.xml文件

<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--利用import标签进行导入-->
<import resource="service.xml"></import>
<import resource="dao.xml"></import>
</beans>

 3. 然后根据相对路径加载spring.xml配置文件即可

 ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");

Spring的IOC配置入门案例就写到这里

1、Spring简介及IOC入门案例的更多相关文章

  1. 【Spring】---【IOC入门案例】

    第一步:导入Jar包 第二步:创建类,在类里面创建方法 public class User { public void add(){ System.out.println("-------- ...

  2. Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

    Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个 ...

  3. 回顾Spring MVC_01_概述_入门案例

    SpringMVC: SpringMVC是Spring为展现层提供的基于MVC设计的优秀的Web框架,是目前最主流的MVC框架之一 SpringMVC通过注解,让POJO成为处理请求的控制器,而无须实 ...

  4. Spring初识及其IOC入门

    一.框架 框架是一些类和接口的集合,它一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度. 二.Spri ...

  5. spring的IOC入门案例

    步骤: 一,导入jar 二,创建类,在类里创建方法 三,创建Spring配置文件,配置创建类 四,写代码测试对象创建

  6. Spring.Net的IOC入门

    1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...

  7. IDL简介与corba入门案例

    IDL接口定义语言简介   IDL用中立语言的方式进行描述,能使软件组建(不同语言编写的)间相互通信. IDL提供了一个桥来连接不同的系统. Corba 上的服务用IDL描述,将被映射为某种程序设计语 ...

  8. Spring_day01--课程安排_Spring概念_IOC操作&IOC底层原理&入门案例_配置文件没有提示问题

    Spring_day01 Spring课程安排 今天内容介绍 Spring概念 Spring的ioc操作 IOC底层原理 IOC入门案例 配置文件没有提示问题 Spring的bean管理(xml方式) ...

  9. Java开发学习(二)----IOC、DI入门案例

    一.IOC入门案例 1.1 思路分析 (1)Spring是使用容器来管理bean对象的,那么管什么? 主要管理项目中所使用到的类对象,比如(Service和Dao) (2)如何将被管理的对象告知IOC ...

随机推荐

  1. java 模版式的 word

    ... package com.kingzheng.projects.word; import java.io.BufferedWriter; import java.io.File; import ...

  2. [hdu6145]Arithmetic of Bomb II

    对于题中的"normal expression"(仅含加减乘和无前导0的非负整数,无括号)的计算,实际上并不需要通常的表达式求值,而可以用下述方式计算-- 维护三元组$(a,b,c ...

  3. [loj2049]网络

    考虑整体二分,假设二分到区间$[l,r]$,即要对若干个询问,判断这些询问的答案与$mid=\lfloor\frac{l+r}{2}\rfloor$的关系 根据题意,答案$\le mid$等价于重要度 ...

  4. jvm的垃圾回收

    首先类加载的过程:加载验证准备解析初始化 类加载器: jvm内存模型图: 空着,等以后补上 jvm垃圾收集器 目前只知道,parnew,cms,g1 parnew新生代垃圾回收器,复制算法 cms复制 ...

  5. 日志审计功能-appent多个日志

    public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1"); jedis.setnx ...

  6. DataGrid首次进入页面时,不加载任何数据[转]

    首次不加载数据问题,必须搞明白如何才能不加载数据.根据Easu UI的官方API: http://www.jeasyui.com/documentation/ 仔细观察DataGrid的事件当中有一个 ...

  7. html+css第六篇-定位

    relative相对定位/定位偏移量 position:relative; 相对定位 a.不影响元素本身的特性: b.不使元素脱离文档流: c.如果没有定位偏移量,对元素本身没有任何影响: 定位元素位 ...

  8. [源码解析] PyTorch 分布式(12) ----- DistributedDataParallel 之 前向传播

    [源码解析] PyTorch 分布式(12) ----- DistributedDataParallel 之 前向传播 目录 [源码解析] PyTorch 分布式(12) ----- Distribu ...

  9. CF1354F Summoning Minions

    考虑我们一定是先放我们选定了\(m\)个数,一定是先放了\(m-1\)个数上去,然后让放上一个不打算选的然后拿下来,白嫖\(b * (m-1)\)的贡献,最后放上一个打算放的. 考虑我们一定是按\(b ...

  10. CF1437G Death DBMS

    题面传送门. 题意简述:给出 \(n\) 个字符串 \(s_i\),每个 \(s_i\) 初始权值为 \(0\).\(q\) 次操作:修改 \(s_i\) 的权值:查询给出字符串 \(q\) 能匹配的 ...