栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(kuang)1、Spring 笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(kuang)1、Spring 笔记

官网:https://spring.io/projects/spring-framework#overview
官方下载地址:https://repo.spring.io/release/org/springframework/spring/
GitHub:https://github.com/spring-projects/spring-framework
 

依赖:


    org.springframework
    spring-webmvc
    5.3.9


    org.springframework
    spring-jdbc
    5.3.9

1.2 优点:
  • spring是开源的免费的容器。
  • spring是一个轻量级的,非入侵式的框架。
  • 控制反转(IOC),面向切面编程 (AOP)。
  • 支持事务处理,对框架整合的支持。
    总结:spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
1.3 组成:

  • 之前,程序是主动创建对象,控制权在程序员手上。
  • 使用set注入之后,程序不再具有主动性,变成了被动的接收对象。

IOC思想,从本质上解决了问题,程序员不用再去管理对象的创建了,系统的耦合性降低,可以更加专注的业务层
这是IOC的原型,反转就是把主动权交给用户

2.2 控制反转

控制:谁来控制对象的创建,传统应用是由程序员控制对象的创建,使用spring后,对象是由spring来控制

反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:就是利用set方法来进行注入
IOC是一种编程思想,由主动的编程变成被动的接收

现在,我们彻底不用在程序中改动了,要实现不同的操作,只需要在xml配置中进行修改。所谓的IOC:对象由spring进行创建、管理、装配

3、HelloSpring
  1. 新建一个maven项目,编写实体类
public class Hello {
    private String str;

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + ''' +
                '}';
    }
}

2.编写xml配置文件





    
//使用spring来创建对象,在spring这些都称为Bean
    
        
    

.3.测试

public class MyTest {
    public static void main(String[] args) {
        //获取Spring的上下文对象!
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        //我们的对象现在都在Spring中的管理了,我们需要使用,直接去里面取出来就可以!
        Hello hello = (Hello) context.getBean("hello");
        System.out.println(hello.toString());
    }
}

Hello{str='Spring'}

这个过程就叫控制反转:

控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。

反转:程序本身不创建对象,而变成被动的接收对象。

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

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

可以通过new ClassPathXmlApplicationContext去浏览一下底层源码。

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

5. 依赖注入(DI)dependency injection 5.1 构造器注入

前面讲过了

5.2 set方式注入【重点】
  • 5.2.1 依赖注入:set注入
    • 依赖 :bean对象的创建依赖于容器
    • 注入 :bean对象中的所有属性,由容器来注入

【环境搭建】
1.复杂类型

public class Address {

    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

2.真实测试对象

   public class Studfent{
    private String name;
    private Address address;
    private String[] books;
    private List hobbys;
    private Map card;
    private Set games;
    private String wife;
    private Properties info;
}

3.beans.xml




    
        
    

    
        
        
        
        
        
        
            
                三国演义
                水浒传
                红楼梦
                西游记
            
        
        
        
            
                听歌
                看书
                学Java
            
        
        
        
            
                
                
            
        
        
        
            
                LOL
                梦幻西游
                绝地求生
            
        
        
        
            
        
        
        
            
                201112084
                hardy
                root
                root
            
        
    

4.测试类

public class MyTest {
    public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        Student student = (Student) context.getBean("student");

        System.out.println(student.toString());
        
    }
}
5.3 拓展方式注入(P和 C命名空间注入)

我们可以使用P命名空间 和 C命名空间注入
注:需要导入xml约束

	xmlns:c="http://www.springframework.org/schema/c"   
    xmlns:p="http://www.springframework.org/schema/p"
	xmlns:p="http://www.springframework.org/schema/p"
	
    
    
	xmlns:c="http://www.springframework.org/schema/c"   
	 
	
    
5.4 bean的作用域:6种
singleton:全局只能有1个(spring默认机制)(单例模式)
prototype:每次从容器get的时候都会产生一个新对象(原型模式)
request   以下的只能在web中使用
session
application
websocket

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号