spring--基于ioc的配置文件方式

简介: 概念Spring是一个开源的轻量级框架spring核心主要有两部分(1.)aop:面向切面编程,扩展功能不是修改源代码实现(2.)ioc:控制反转,比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方...

概念

  1. Spring是一个开源的轻量级框架
  2. spring核心主要有两部分
    (1.)aop:面向切面编程,扩展功能不是修改源代码实现
    (2.)ioc:控制反转,比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象
    ioc是把对象的创建不是通过new方式实现,而是交给spring配置创建类对象
  3. spring是一个一站式的轻量级框架
    (1.)spring在javaee三层结构中,每一层都提供不同的解决技术
    ----web层:springMVC
    ----service:spring的ioc
    ----dao层:spring的jdbcTemplate

ioc(控制反转)的操作

  • 把对象的创建直接交给spring进行管理
  • ioc的操作有两部分
    • 基于ioc的配置文件方式
    • 基于ioc的注解方式
  • ioc的底层原理

ioc底层原理使用技术
(1.)xml配置文件
(2.)dom4j解析xml
(3.)工厂设计模式
(4.)反射


img_a36b21c4c8125f1b7c1c67bef5db3d85.png
image.png

ioc操作步骤

  • 第一步 导入jar包
  • 创建类,在类里面创建方法
  • 创建spring配置文件,配置创建类
    • spring核心位置和文件名不是固定的,建议写在src目录下,文件名为ApplicationContext.xml
    • 引入schema约束
    • 创建 配置对象
  • 写测试
/*
分两步:
1.加载spring配置文件,根据配置文件创建对象
*/
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
//第二步:得到配置创建对象
/*
例如:User user = context.getBean("user");
*/

属性注入

创建对象的时候,向类里面属性里面设置值
属性注入方式:(Java方式)
1.有参数的构造函数
2.set方法
3.使用接口注入

//接口注入
public interface Dao{
  public void delete(String name);
}
public class DaoImpl implements Dao{
  private String name;
  public void delete(String name){
    this.name = name;
  }
}

在sping中支持前两种方式(set、有参构造)

<!-- 使用有参构造注入属性 -->
<bean id = "demo" class = "cn.persistXL.property.Demo">
  <!-- 使用有参构造注入 -->
  <constructor-arg name = "username" value = "小王小马"></constructor-arg>
</bean>
<!-- 使用set注入属性 -->
<bean id = "book" class = "cn.persistXL.property.book">
  <!-- 使用set注入  name属性值:类里面定义的属性名称 value:具体的值 -->
  <property name = "bookname" value = "java基础"></property>
</bean>

注入对象类型属性(重点)

  • 创建service类和dao类
    • 在service得到dao对象(new)
  • 具体实现过程
    • 在service里面把dao作为类型属性private UserDao userDao;
    • 生成dao类型set属性的方法public void setUserDao(UserDO UserDO){this.userDao = userDao}
    • 注入类型的对象属性
<!-- 注入对象类型属性 -->
<!-- 1.配置service和dao对象 -->
<bean id = "userDao" class ="cn.persistXL.ioc.UserDao" ></bean>
<bean id = "userService" class ="cn.persistXL.ioc.UserService" >
  <!-- 注入dao对象
            name属性:service类里面属性名称
                  现在不要写value属性,因为刚才是字符串,现在是对象,
            写ref属性: dao配置属性bean标签中的id值
   -->
   <property name = "userDao" ref = "userDao"></property>
</bean>

IOC和DI的区别

IOC:
控制反转,把对象创建交给spring进行配置
DI:
依赖注入,创建对象中向类里面的属性中设置值
关系:
依赖注入不能单独存在,需要对象创建的基础上存在(在ioc基础上完成操作)

spring整合web项目原理

加载spring核心配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
new对象,功能可以实现,效率很低
实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
实现原理:
1.servletContext对象
2.监听器
3.具体使用
1).在服务器启动时候,为每个项目创建一个servletContext对象
2).在ServletContext对象创建的时候,使用监听器可以监听到具体的ServlectContext对象在什么时候创建
3).使用监听器监听到ServletContext对象创建时候
(1).加载spring文件,把配置文件的配置对象创建
(2).把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
4).获取对象的时候,到ServletContext域对象得到(getAttribute方法)

相关文章
|
1月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
84 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
22天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
18天前
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
10天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
22 0
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
46 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
127 9
|
1月前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
28 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
2月前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
40 4
|
30天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
65 0