Java_Spring第一天

今日内容

  1. spring概述

  2. 两大核心功能

    1. IOC
    2. AOP(后面学习)
  3. IOC

    1. bean标签
  4. DI

    1. set注入方式
    2. 构造方法注入方式

1. spring的概述

1.1 框架

是一个半成品软件。提高开发效率。简化代码的编写。

1.2 spring概述

spring是轻量级的一站式框架。

1.3 体系结构

在这里插入图片描述

2,IOC

2.1 概述

控制反转。spring反向控制应用程序所需要的资源。

  • 之前的做法: 在应用程序中创建资源对象。

  • 使用spring的做法: 将类的对象交给spring管理,而spring会将这些对象存储在核心容器中

    应用程序需要哪儿个资源,不需要创建了,只需要从核心容器中获取即可。

作用: 解除应用程序和资源间的耦合。

在这里插入图片描述

2.2 入门案例

  • 引入jar包的坐标

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.9.RELEASE</version>
    </dependency>
    
  • 定义资源所属类

    public interface UserService {
        public void save();
    }
    
    
    public class UserServiceImpl implements UserService {
        public void save() {
            System.out.println("user service running...");
        }
    }
    
  • 编写spring的配置文件

    applicationContext.xml

    注意:

    1. 配置文件的名称不是必须叫applicationContext.xml,建议这样命名
    2. 配合文件的路径必须在类路径下。resources下面
    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 1.创建spring控制的资源-->
        <bean id="userService" class="com.itheima.service.impl.UserServiceImpl"/>
        
    </beans>
    
  • 编写应用程序

    public class UserApp {
        public static void main(String[] args) {
            //2.加载配合文件,并创建核心容器
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            //3.获取资源
            UserService userService = (UserService) ctx.getBean("userService");
            userService.save();
        }
    }
    

2.3 bean标签

作用: 将类的对象的创建交由spring完成

属性:

  • id属性 : bean(对象)的名称。可以通过该名称获取对象。

  • class属性: 配置类的全类名。spring会通过该类名创建对象。

  • scope属性: bean的作用范围

    • singleton(单个对象): 在我们创建核心容器对象时,会创建配置文件中bean标签配置的类的对象,并存储在核心容器中。

      默认值,也是以后经常使用的取值。

    • prototype(多个对象): 创建容器时并不会创建bean对象,在获取bean对象的时候创建。

2.4 bean的生命周期

scope=“singleton”,bean是在创建核心容器的时候创建,核心容器关闭的时候销毁。

scope=“prototype”,bean是在获取bean对象额时候创建

  • init-method属性 : 在bean创建后进行初始化的操作

  • destory-method属性: 在bean销毁的时候需要进行销毁操作

2.5 使用工厂获取bean对象

  • 静态工厂

    public class UserServiceFactory {
        
        public static UserService getService(){
            System.out.println("factory create object...");
            return new UserServiceImpl();
        }
    }
    

在这里插入图片描述

  • 实例工厂

    public class UserServiceFactory1 {
        
        public UserService getService(){
            System.out.println("factory create object...");
            return new UserServiceImpl();
        }
    }
    

在这里插入图片描述

注意: 上面两种方式获取到的UserService实现类对象,spring也会将给bean对象存放在核心容器中。

3,DI

3.1 概述

依赖注入。spring将应用程序依赖的资源赋值应用程序。

3.2 set注入(重点掌握)

准备环境:

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}

所谓的注入其实就是给成员变量赋值。

  • 以前的做法

    //1,创建dao类的对象
    UserDao userDao = new UserDaoImpl();
    //2,创建service类的对象
    UserService userService = new UserServiceImpl();
    //3,给userDao成员赋值
    userService.setUserDao(userDao);
    
  • spring配置的做法

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
    	<!--
    		set注入
    			name属性: 属性名
    			ref属性 : 引用另一个对象
    	-->
        <property name="userDao" ref="userDao"></property>
    </bean>    
    

property标签:

  • name属性: 属性名

  • ref属性 : 对象类型

  • value属性 : 普通类型(基本数据类型,基本数据类型的包装类型,String类型)

3.3 构造方法注入(了解)

环境准备:

public class UserServiceImpl implements UserService {

    private UserDao userDao;
    private String username;

    public UserServiceImpl(UserDao userDao,String username) {
        this.userDao = userDao;
        this.username = username;
    }
}
  • 以前的做法:

    //1,创建dao类的对象
    UserDao userDao = new UserDaoImpl();
    //2,创建service类的对象
    UserService userService = new UserServiceImpl(userDao,"robin");
    
  • spring配置的做法:

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
    	<construtor-arg name="userDao" ref="userDao"></construtor-arg>
        <construtor-arg name="username" value="robin"></construtor-arg>
    </bean>    
    

4,集合数据注入

4.1 list集合

在这里插入图片描述

4.2 properties双列集合

在这里插入图片描述

5,引入外部配置文件

  • 引入properties配置文件

    <!--2.加载配置文件-->
    <context:property-placeholder location="classpath:*.properties"/>
    

    注意: classpath:起到的作用是标识。表示配置文件是在类路径下。

    使用配置文件中的数据用 ${keyName}

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl">
        <property name="userName" value="${user}"/>
        <property name="password" value="${pwd}"/>
    </bean>
    
  • 引入xml配置文件

    <import resource="xml配置文件的名称"/>
    

6,BeanFactory体系结构

BeanFactory(接口)
	|-- ApplicationContext(接口)
		|-- ClasspathXmlApplicationContext : 从类路径加载配置文件
		|-- FileSystemXmlApplicationContext : 从文件系统中加载配置文件
		|-- AnnotationConfigApplicationContext : 加载配置类
	|-- XmlBeanFactory

spring配置文件头信息,方便大家配合模板:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    
</beans>

重点小结:

  • IOC
    • bean标签
      • id属性
      • class属性
      • scope属性
  • DI
    • 注入的方式
      • set注入
        • property标签
          • name属性: 属性名
          • value属性|ref属性
      • 构造方法注入(了解)
    • 给集合注入数据
      • list集合
      • properties集合
  • 引入外部的配置文件
    • properties配置文件
    • xml配置文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值