Spring

Spring简介1.概念Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。IoC:Inversion of ControlAOP:Aspect Oriented Programming2.Spring官方压缩包介绍3.常用jar包说明Spring之Ioc1.IoC与DI1.1 IoC控制反转,是一个概念,是一种思想。控制反转就是对对象控制权的转移,从程序...
摘要由CSDN通过智能技术生成

Spring简介

1.概念

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
IoC:Inversion of Control
AOP:Aspect Oriented Programming

2.Spring官方压缩包介绍

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

3.常用jar包说明

在这里插入图片描述

4.spring不同版本之间的新特性

在这里插入图片描述

Spring之Ioc

1.IoC与DI

1.1 IoC

控制反转,是一个概念,是一种思想。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。把对象的创建、初始化、销毁等工作交给spring容器来做。有spring容器控制对象的生命周期。

1.2 DI

依赖注入:Dependency Injection。依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。

1.3 IoC与DI的关系

IoC是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式之一是DI。

2.第一个IoC程序

2.1 导入jar包(基本7个)

在这里插入图片描述

2.2 创建spring配置文件

2.3 Bean的定义与注册

applicationContext.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的定义:以下配置相当于SomeService service = new SomeServiceImpl(); -->
    <bean id="someServiceImpl" class="com.java.service.impl.SomeServiceImpl"></bean>
</beans>

2.4 从spring容器中获取Bean

package com.java.test;

import com.java.service.SomeService;
import com.java.service.impl.SomeServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SomeTest {
   
    //该方式的缺点:当前测试类与service实现类耦合到一起
    @Test
    public void someTest(){
   
        SomeService service = new SomeServiceImpl();
        service.doSome();
    }
    //该方式的优点:实现了测试类与service实现类的解耦合
    @Test
    public void someTest01(){
   
        //创建容器对象
        ApplicationContext ac  = new ClassPathXmlApplicationContext("applicationContext.xml");
        SomeService service = ac.getBean("someServiceImpl", SomeService.class);
        service.doSome();
    }
}

3. ApplicationContext容器与BeanFactory容器的区别

@Test
    public void someTest01(){
   
        //创建容器对象,ApplicationContext容器初始化时,所有的容器中的bean创建完毕
        ApplicationContext ac  = new ClassPathXmlApplicationContext("applicationContext.xml");
        SomeService service = ac.getBean("someServiceImpl", SomeService.class);
        service.doSome();
    }
    @Test
    public void someTest02(){
   
        //创建容器对象,BeanFactory当调用getBean获取相应对象时,才创建对象
        BeanFactory bf = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
        SomeService service = bf.getBean("someServiceImpl", SomeService.class);
        service.doSome();
    }

4. Bean的装配

Bean的装配,即Bean对象的创建

4.1 默认装配方式(构造方式)

<!-- bean的定义:以下配置相当于SomeService service = new SomeServiceImpl(); -->
    <bean id="someServiceImpl" class="com.java.service.impl.SomeServiceImpl"></bean>

4.2 动态工厂Bean

public class ServiceFactory {
   
    //实例工厂方式创建bean对象
    public SomeService getSomeService(){
   
        SomeService someService = new SomeServiceImpl();
        return someService;
    }
}
<!-- 注册工厂 -->
       <bean id="serviceFactory" class="com.java.factory.ServiceFactory"></bean>
       <!-- 从工厂中获取someServiceImpl的bean对象 -->
       <bean id="someServiceImpl" factory-bean="serviceFactory" factory-method="getSomeService"></bean>

4.3 静态工厂Bean

public class ServiceFactory {
   
    //静态工厂方式创建bean对象
    public static SomeService getSomeService(){
   
        SomeService someService = new SomeServiceImpl();
        return someService;
    }
}
<!-- 从工厂中获取someServiceImpl的bean对象 -->
       <bean id="someServiceImpl" class="com.java.factory.ServiceFactory" factory-method="getSomeService"></bean>

5.Bean的作用域(单态模式singleton\原型模式prototype)

<!-- bean的定义:以下配置相当于SomeService service = new SomeServiceImpl(); -->
    <bean id="someServiceImpl" class="com.java.service.impl.SomeServiceImpl" scope="prototype"></bean>
    <bean id="someServiceImpl1" class="com.java.service.impl.SomeServiceImpl"></bean>

6.基于XML的DI

所谓注入,可理解为对象的属性赋值

6.1 设值注入

6.1.1 简单数据类型和引用数据类型注入
<!-- 设值方式DI -->
    <bean id="star" class="com.java.pojo.Star">
        <property name="name" value="贝克汉姆"></property>
        <property name="age" value="39"></property>
        <property name="partner" ref="partner"></property>
    </bean>

    <bean id="partner" class="com.java.pojo.Partner">
        <property name="name" value="维多利亚"></property>
    </bean>
6.1.2 集合属性注入(array、set、list、map、properties)
<!-- 设值方式DI -->
    <bean id="partner1" class="com.java.pojo.Partner">
        <property name="name" value="维多利亚"></property>
    </bean>
    <bean id="partner2" class="com.java.pojo.Partner">
        <property name="name" value="布兰妮"></property>
    </bean>

    <bean id="someService" class="com.java.service.SomeService">
        <property name="myArray">
            <array>
                <value>北京</value>
                <value>上海</value>
            </array>
        </property>
        <property name="mySet">
            <set>
                <ref bean="partner1"/>
                <ref bean="partner2"/>
            </set>
        </property>
        <property name="myList">
            <list>
                <value></value>
                <value></value>
            </list>
        </property>
        <property name="myMap">
            <map>
                <entry key="qq" value="123456"></entry>
                <entry key="mobile" value="1300000"></entry>
            </map>
        </property>
        <property name="myProps">
            <props>
                <prop key="兴趣">足球</prop>
                <prop key="爱好">下棋</prop>
            </props
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值