2021-08-13 Spring 框架

Spring是一个开源框架,为了解决企业应用程序开发复杂性而创建的。“拿来主义”,把业界最好的技术粘合起来形成一个强大的企业级的应用框架。

Spring框架是一个分成架构,由7个定义良好的模块组成。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

Spring模块构建在核心容器之上,核心容器定义了创建,配置和管理bean的方式!

核心容器Spring Core

核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(ioc)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。

 

Spring框架两大核心:IoC和DI

IOC(inversion of Control)简单来说就是将对象Object的创建的权力及对象的生命周期的管理过程交给Spring框架来处理,从此再开发过程中不再需要关注对象的创建和生命周期的管理,而是在需要的时候由Spring框架提供,这个由Spring框架管理对象创建和生命周期的机制称之为控制反转。

DI(Dependency Injection)在创建对象的过程中Spring可以依据对象的关系,自动把其他对象注入(无需创建对象,直接拿来使用)尽力。

总结下Spring核心就干了两件事:

  1. 创建对象
  2. 设置对象的关联关系
package cn.tedu.ioc;

import org.springframework.stereotype.Component;

@Component
public class Hello {
    public void get(){
        System.out.println("hello ");
    }
}
package cn.tedu.ioc;
import org.springframework.stereotype.Component;

@Component//spring提供,自动完成ioc{“user”,new user() }
public class User {
    public void get(){
        System.out.println(123);
    }
}

Resources创建applicationContext.xml

<!--配置包扫描 -->
<context:component-scan base-package="cn.tedu.ioc" ></context:component-scan>
//测试类
package cn.tedu.test;
import cn.tedu.ioc.User;
import cn.tedu.ioc.Hello;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {
    @Test
    public void get(){
        ClassPathXmlApplicationContext spring =
                new ClassPathXmlApplicationContext("Spring-config.xml");
        Object hello = spring.getBean("hello");
        Hello hello1 = (Hello) hello;
        hello1.get();
//根据id获取bean
        //Spring就是一个大工厂(容器)专门生成bean,bean就是对象
        Object user = spring.getBean("user");
        User user1 = (User) user;
        user1.get();

    }
}

控制反转IoC是说创建对象的控制器进行转移,疫情创建对象的主动权和创建时机都是自己把握的,而现在将这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了Ioc容器,依赖关系就变了,原先的依赖关系就没了,他们都依赖Ioc容器了,通过IoC容器建立它们之间的关系。

自动装配

利用注解方式,我们只需要写@Autowired注解,底层就会去容器中找对应的对象,如果有获取到,反射调用其对应的set方法,设置。而这个调用过程都是自动,我们没有手工去写set方法。所以这个过程也称为自动装配。

package cn.tedu.di;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Student {
    @Autowired
    Teacher t;
    String name="韩云";
    
    @Override
    public String toString() {
        return "Student{" +
                "t=" + t +
                ", name='" + name + '\'' +
                '}';
    }
}
package cn.tedu.di;

import com.sun.org.apache.bcel.internal.generic.NEW;
import org.springframework.stereotype.Component;

@Component
public class Teacher {
    String name="谢佩华";

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                '}';
    }
    public void dd(){
        System.out.println("dd");
    }
}
package cn.tedu.di;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    @org.junit.jupiter.api.Test
    public void di2(){
        ClassPathXmlApplicationContext spring =
                new ClassPathXmlApplicationContext("Spring-config.xml");
        Object student = spring.getBean("student");
        System.out.println(student);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值