Spring 基础及简单运用

一. Spring概述

1、框架:半成品软件

高度抽取可重用代码的一种设计,高度通用
框架:多个可重用模块的集合,形成一个某个领域的整体解决方案;

2、Spring

容器(可以管理所有的组件(类))框架;
核心关注:IOC和AOP;

3、Spring(IOC和AOP)

​​​​在这里插入图片描述

Spring的模块划分图:

在这里插入图片描述

建议用哪个模块导入哪个包。

二. IOC 基础

在这里插入图片描述

IOC(控制反转)

Inversion(反转) Of Control)
控制:资源的获取方式

主动式:(要什么资源都自己创建)

BookServlet{
        BookService bs = new BookService();
        AirPlane ap = new AirPlane();
        //复杂对象的创建是比较庞大的工程;
}

被动式:资源的获取不是我们自己创建,而是交给一个容器来创建和设置

 BookServlet{
         BookService bs;
         public void test01(){
              bs.checkout();
        }
 }

容器:管理所有的组件(有功能的类)。
假设,BookServlet 受容器管理,BookService 也受容器管理。容器可以自动的探查出哪些组件(类)需要用到另一写组件(类)。容器帮我们创建BookService对象,并把BookService对象赋值过去。

容器:从主动的 new 资源变为被动的接受资源

DI:(Dependency Injection)依赖注入

容器能知道哪个组件(类)运行的时候,需要另外一个类(组件),容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到BookServlet中。

只要是 IOC 容器管理的组件,都能使用容器提供的强大功能。

以前是自己 new 对象,现在所有的对象交给容器创建。给容器中注册组件。

举例示范:
1.先在 IDEA 中创建 Mawen 工程,并在 pom.xml 中更改配置(spring所需的依赖)

核心包:
spring-core-5.2.5.RELEASE.jar
spring-expression-5.2.5.RELEASE.jar
spring-beans-5.2.5.RELEASE.jar
spring-context-5.2.5.RELEASE.jar

在这里插入图片描述
2. 创建一个类

public class HelloSpring {
    private String name;
    private String age;

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void sayHello(){
        System.out.println("start....");
        System.out.println("hello "+ name+ " "+age+"岁");
        System.out.println("end...");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3.在 resource 中创建一个 bean.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
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans ">

    <!-- 注册一个对象,Spring会自动创建这个对象 -->
    <!-- 一个bean标签可以注册一个组件(对象、类)-->
    <!--配置bean
    id:这个对象的唯一标识
    class:注册组件的全类名
    -->
    <bean id="hello01" class="HelloSpring">
        <!-- 使用 property 标签为对象的属性赋值 -->
        <!-- name:属性名  value:属性值-->
        <property name="name" value="jess"></property>
        <property name="age" value="18"></property>
    </bean>

</beans>

Bean 其实就是一个new好的对象

4.再写一个测试类
对象由容器创建

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    public static void main(String[] args) {

        /*
        *  从容器中拿到组件
        */

        //ApplicationContext代表 IOC 容器
        //ClassPathXmlApplicationContext:当前应用配置文件在 ClassPath下
        //根据spring配置文件得到IOC容器对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
        HelloSpring bean = (HelloSpring)applicationContext.getBean("hello01");
        bean.sayHello();
        System.out.println(bean);
    }
}

执行结果:
在这里插入图片描述
new ClassPathXmlApplicationContext("bean.xml"):IOC 容器的配置文件在类路径下(src是类路径的开始)
new FileSystemXmlApplicationContext("D://bean.xml");:IOC 容器的配置文件在磁盘路径下

注意:

  • 容器中对象的创建在容器创建完成时就已经创建好了。
  • 同一个组件在 IOC 容器中是单实例的(多次获取得到相同的组件),容器启动完成前就创建好了。
  • 若容器中没有这个组件(如 HelloSpring02),获取组件声明异常:NoSuchBeanDefinitionException:No bean named “HelloSpring02” is defined
  • property: IOC 容器在创建这个组件对象的时候,会利用 setter 方法为 Javabean 的属性进行赋值
  • Javabean 的属性名是由 getter/setter 方法决定的。set 去掉后面的一串,首字母小写就是属性名。(一定要使用代码自动生成,以防出错)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值