广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring零基础入门IOC
  • 776
分享到

Spring零基础入门IOC

SpringIOC容器SpringIOC 2022-11-13 14:11:34 776人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.Hellospring2.ioc创建对象方式2.1.通过无参构造方法来创建2.2.通过有参构造方法来创建1.HelloSpring 导入jar包 <dependen

1.HelloSpring

导入jar

  <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-WEBmvc</artifactId>
        <version>5.2.0.RELEASE</version>
        </dependency>

1、编写一个Hello实体类

public class Hello {
    private String str;
    public Hello(String str) {
        this.str = str;
    }
    public Hello() {
    }
    public String getStr() {
        return str;
    }
//set方法是核心
    public void setStr(String str) {
        this.str = str;
    }
    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + '\'' +
                '}';
    }
}

2、编写我们的spring文件 , 这里我们命名为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="hello" class="com.hc.pojo.Hello">
       <property name="str" value="Spring"/>
    </bean>
<!--    使用spring来创建对象,在spring这些都称为Bean-->
<!--    类型   变量名 =new 类型();-->
<!--    Hello hello=new Hello();-->
</beans>

3、我们可以去进行测试了 .

public class MyTest {
    public static void main(String[] args) {
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Object hello = context.getBean("hello");
        System.out.println(hello.toString());
    }
}

思考

  • Hello 对象是谁创建的 ? hello 对象是由Spring创建的
  • Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的

这个过程就叫控制反转 :

  • 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
  • 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .

依赖注入 : 就是利用set方法来进行注入的.

IOC是一种编程思想,由主动的编程变成被动的接收

可以通过newClassPathXmlApplicationContext去浏览一下底层源码 .

修改案例一

我们在案例一中, 新增一个Spring配置文件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="MysqlImpl" class="com.hc.dao.UserDaomysqlImpl"/>
    <bean id="oracleImpl" class="com.hc.dao.UserDaoOracleImpl"/>
    <!--    使用spring来创建对象,在spring这些都称为Bean-->
    <!--    类型   变量名 =new 类型();-->
    <!--    Hello hello=new Hello();-->
    <bean id="UserServiceImpl" class="com.hc.service.UserServiceImpl">
<property name="userDao" ref="OracleImpl"/>
    </bean>
</beans>

测试!

import com.hc.dao.UserDaoMysqlImpl;
import com.hc.dao.UserDaoOracleImpl;
import com.hc.dao.UserDaoSqlserverImpl;
import com.hc.service.UserService;
import com.hc.service.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import sun.security.mscapi.CPublicKey;

public class MyTest {
    public static void main(String[] args) {
        //用户调用的是业务层,dao层他们不需要接触!
//        UserServiceImpl userService = new UserServiceImpl();
//        userService.setUserDao(new UserDaoSqlserverImpl());
//        userService.setUserDao(new UserDaoOracleImpl());
//        userService.getUser();
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserServiceImpl");
        userServiceImpl.getUser();
    }
}

OK , 到了现在 , 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !

2.IOC创建对象方式

2.1.通过无参构造方法来创建

通过无参构造方法来创建

1、User.java

public class User {
    private String name;
    public User(String name) {
        this.name = name;
    }
//    public User() {
//    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void show()
    {
        System.out.println("name="+getName());
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

2、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="user" class="com.kuang.pojo.User">-->
<!--       <property name="name" value="hc"/>-->
<!--   </bean>-->
<!--    //二、有参-->
<!--    <bean id="user" class="com.kuang.pojo.User">-->
<!--       <constructor-arg index="0" value="狂神说java"/>-->
<!--    </bean>-->
<!--    三、有参-->
<!--    <bean id="user" class="com.kuang.pojo.User">-->
<!--        <constructor-arg name="name" value="hc"/>-->
<!--    </bean>-->
    <bean id="user" class="com.kuang.pojo.UserT" name="u1 u2,u3">
        <property name="name" value="西部开源"/>
    </bean>
<!--    alias取别名-->
<!--    <alias name="user" alias="ccccccccccccccccc"/>-->
</beans>

3、测试类

public class MyTest {
    public static void main(String[] args) {
       // User user = new User();
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
       //User user1 = (User) context.getBean("user");
       // User user1 = (User) context.getBean("ccccccccccccccccc");
        UserT user4 = (UserT) context.getBean("u2");
        // User user2 = (User) context.getBean("user");
       user4.show();
        //System.out.println(user1==user2);
    }
}

结果可以发现,在调用show方法之前,User对象已经通过无参构造初始化了!

2.2.通过有参构造方法来创建

通过有参构造方法来创建

1、UserT . java

public class UserT {
    private String name;
    public UserT() {
        System.out.println("UserT被创建了");
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void show()
    {
        System.out.println("name="+getName());
    }
}

2、beans.xml 有三种方式编写

<!--一、无参-->
<!--   <bean id="user" class="com.kuang.pojo.User">-->
<!--       <property name="name" value="hc"/>-->
<!--   </bean>-->
<!--    //二、有参-->
<!--    <bean id="user" class="com.kuang.pojo.User">-->
<!--       <constructor-arg index="0" value="狂神说java"/>-->
<!--    </bean>-->
<!--    三、有参-->
<!--    <bean id="user" class="com.kuang.pojo.User">-->
<!--        <constructor-arg name="name" value="hc"/>-->
<!--    </bean>-->

3、测试

public class MyTest {
    public static void main(String[] args) {
       // User user = new User();
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
       //User user1 = (User) context.getBean("user");
       // User user1 = (User) context.getBean("ccccccccccccccccc");
        UserT user4 = (UserT) context.getBean("u2");
        // User user2 = (User) context.getBean("user");
       user4.show();
        //System.out.println(user1==user2);
    }
}

结论:在配置文件加载的时候。其中管理的对象都已经初始化了!

到此这篇关于Spring零基础入门IOC的文章就介绍到这了,更多相关Spring IOC内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring零基础入门IOC

本文链接: https://www.lsjlt.com/news/172150.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring零基础入门IOC
    目录1.HelloSpring2.IOC创建对象方式2.1.通过无参构造方法来创建2.2.通过有参构造方法来创建1.HelloSpring 导入Jar包 <dependen...
    99+
    2022-11-13
    Spring IOC容器 Spring IOC
  • Spring事务管理零基础入门
    目录一、简介二、特性(一原持久隔离)2.1 原子性2.2 一致性(类似能量守恒)2.3 隔离性2.4 持久性三、隔离级别3.1 事务级别(从低到高)3.2 常用数据库默认级别:3.3...
    99+
    2022-11-13
  • Spring 零基础入门WebFlux框架体系
    目录基于注解编程模型函数式编程模型传统的基于Servlet的Web框架,如Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉...
    99+
    2022-11-13
  • Spring零基础入门WebFlux响应式编程
    目录简介响应式编程Reactor信号操作符SpringWebflux执行流程和API注解实现SpringWebflux说明:基于atguigu学习笔记。 简介 Webflux是 Sp...
    99+
    2022-11-13
    Spring WebFlux Spring WebFlux响应式编程
  • 【JavaWeb】HTML零基础入门
    ✨哈喽,进来的小伙伴们,你们好耶!✨ 🛰️🛰️系列专栏:【JavaWeb】 ✈️✈️本篇内容:HTML基础语法详解,附带综合案例。 🚀🚀代码托管平台github:Ja...
    99+
    2023-10-18
    html java 前端
  • Java零基础入门数组
    目录认识数组数组的初始化默认初始化静态初始化动态初始化数组有关的问题数组的遍历求最值问题查询子元素Arrays工具类二维数组二维数组初始方式二维数组的遍历认识数组 数组的定义 数组是...
    99+
    2022-11-13
  • Vueexpress鉴权零基础入门
    目录token图示一点通express鉴权下载加密/解密包加密基本使用(生成token)传递Token查看token验证token讲在前面的话:一个成熟的全栈工程师开发的前后端项目鉴...
    99+
    2023-02-15
    Vue express鉴权 Vue express
  • SQL 零基础入门教程
    目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更...
    99+
    2014-09-15
    SQL 零基础入门教程
  • Swaggo零基础入门教程
    目录配置流程注意区分下载swaggo初始化快速上手gin-swagger简单测试详细配置配置流程 注意区分 go-swagger != swaggo 二者功能差不多,都是生成接口文档...
    99+
    2023-01-28
    Swaggo入门 Golang Swaggo入门
  • C语言零基础入门(1)
    目录1. C语言简介1.1 C语言发展史1.2 C语言的特点1.3算法及其表示1.4常用算法介绍总结1. C语言简介 1.1 C语言发展史 C语言是一种广泛使用的面向过程的计算机程序...
    99+
    2022-11-13
  • C语言零基础入门(2)
    目录1. 数组1.1 一维数组1.1.1 一维数组的定义1.1.2 一维数组的初始化1.1.3 一维数组的引用1.2 二维数组及多维数组1.2.1 二维数组的定义1.2.2 二维数组...
    99+
    2022-11-13
  • HTML入门零基础教程(四)
    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 通过前三篇的学习,相信你们对HTML有了一些基础的了解,那么我们就来先做一个小练习,巩固一下之前所学习的知识。 目...
    99+
    2023-08-31
    html 前端 css javascript vscode
  • PyTorch零基础入门之构建模型基础
    目录一、神经网络的构造二、神经网络中常见的层2.1不含模型参数的层2.2含模型参数的层(1)代码栗子1(2)代码栗子22.3二维卷积层stride2.4池化层三、LeNet模型栗子三...
    99+
    2022-11-12
  • VUE零基础入门axios的使用
    目录一.axios是什么二.axios的特点三.axios怎么安装四.在VUE全局挂载导入挂载使用五.axios便捷方法六.axios基础方法七.axios执行结果八.config ...
    99+
    2022-11-13
  • python3完全零基础入门视频
    【课程内容】 计算机基础常识Python语言概览、安装与运行Python 变量、数据类型及存储Python 常用数据类型概览数值与字符串列表list字典表dict 与元组 tuple文件与类型汇总语句、表达式与if分支循环语句迭代函数定义与...
    99+
    2023-01-31
    入门 基础 视频
  • Netty网络编程零基础入门
    目录OSI七层网络模型Socket技术TCP协议Java语言创建socket应用http协议OSI七层网络模型 应用层:Http协议、文件服务器、邮件服务器 表示层:数据转换解决不同...
    99+
    2022-11-13
    Netty网络编程 Netty编程
  • 零基础怎么快速入门Python
    这篇文章主要讲解了“零基础怎么快速入门Python”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“零基础怎么快速入门Python”吧!1、Python 介绍学习一门新的语言之前,首先简单了解下...
    99+
    2023-06-02
  • 《零基础入门学习Python》【第一版】
    测试题答案: 0. 什么是BIF?BIF 就是 Built-in Functions,内置函数。为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!!!),Python 提供了非常丰富的内置函数,我们只需要直接调用即可,例如 pri...
    99+
    2023-01-31
    入门 基础 Python
  • Spring入门基础之依赖注入
    目录一、构造器注入二、set注入三、其他方式注入(1)导入约束(2)p命名注入(3)c命名注入一、构造器注入 在前几节已经做过了详细的说明讲解,我们先跳过 二、set注入 依赖注入 ...
    99+
    2022-11-13
  • Spring从入门到源码之IOC基本用法
    1、spring_helloworld 使用maven的方式来构建项目(Mavaen) 添加对应的pom依赖pom.xml <dependencies> ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作