Spring入门,理论推导

概述

  • 解决企业应用开发的复杂性
  • 使现有的技术更加容易使用
  • 开源免费框架
  • 轻量级,非入侵式的框架
  • 控制反转(IOC),面向切面编程(AOP)
  • 支持事务处理
  • 整合其他框架
依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.6</version>
</dependency>
组成

拓展

Spring-->Spring MVC-->SpringBoot-->SpringCloud

  • Spring Boot
    • 快速开发的脚手架
    • 基于SpringBoot可以快速开发单个微服务
    • 约定大于配置
  • Spring Cloud
    • 基于SpringBoot

IOC理论推导

  • UserDao

  • UserDaoImpl

  • UserService

  • UserServiceImpl

在我们之前业务中,用户的需求可能会影响我们原来的代码,要根据用户需求修改代码,代价大

利用set注入

 //2.利用set进行动态实现值的注入
private UserDao userDao;
    
public void setUserDao(UserDao userDao) {
	this.userDao = userDao;
}
  • 之前,程序主动创建对象!控制权在程序员手上
  • 使用set注入,程序不在具有主动性,而是变成了 被动的接收对象

这种思想,从本质上解决了问题,程序员不用再去管对象的创建了,系统耦合性大大降低,可以更加专注于业务的实现上!这是IOC原型,控制反转

IOC本质

对象由Spring创建,管理,装配

控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

控制反转是一种通过描述(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">

    <!--使用spring创建对象,这些对象称为Bean-->
    <!--
    java代码中:
    类型 变量名 = new 类型();
    Hello hello = new Hello();

    spring中
    id:变量名
    class:类型
    property:属相设置
    -->
    <bean id="hello" class="com.moral.pojo.Hello">
        <property name="str" value="spring"/>
    </bean>
</beans>

hello对象由spring创建,依赖注入就是用set来 进行注入

HelloSpring
  • beans.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="userDaoMysqlImpl" class="com.morl.dao.UserDaoMysqlImpl"/>
        <bean id="userDaoOracleImpl" class="com.morl.dao.UserDaoOracleImpl"/>
    	
        <!--ref:引用spring创建好的对象--
        <bean id="userServiceImpl" class="com.morl.service.UserServiceImpl">
            <property name="userDao" ref="userDaoMysqlImpl"/>
        </bean>
    </beans>
    
  • test

    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("userServiceImpl");
    userServiceImpl.getUser();
    

    以后根据需求,只修改xmL配置文件即可

posted @   jpy  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示