Spring-(复习1)基础入门

前言:到目前为止已经学完了Spring框架,然后这里给自己所学的知识来个小总结,便于日后复习。
编写环境基于idea。

Spring的概述

什么是Spring
在这里插入图片描述

  • Spring:SE/EE开发的一站式框架。
    • 一站式框架:有EE开发的每一层解决方案。

      • WEB层 :SpringMVC
      • Service层 :Spring的Bean管理,Spring声明式事务
      • DAO层 :Spring的Jdbc模板,Spring的ORM模块

Spring的入门(IOC)

  • IOC: Inversion of Control(控制反转)。
    • 控制反转:将对象的创建权反转给(交给)Spring。

解压Spring的开发包

  1. docs :Spring的开发规范和API。
  2. libs :Spring的开发的jar和源码
  3. schema :Spring的配置文件的约束
    在这里插入图片描述

创建一个Web项目,引入jar包

在这里插入图片描述
前两个是日志包

  • spring-beans-4.2.4.RELEASE.jar:所有应用都要用到的JAR包,它包含访问配置文件、创建和管理Bean以及进行IOC或者DI操作相关的所有类(IOC和DI后面会讲的)。
  • spring-core-4.2.4.RELEASE.jar:包含Spring框架基本的核心工具,是其他组件的基本核心。
  • spring-context-4.2.4.RELEASE.jar:提供了在基础IOC功能上的扩展服务。
  • spring-expression-4.2.4.RELEASE.jar:定义了Spring的表达式语言.

创建接口类

package com.lzhui.Dao;

public interface UserDao {
    public void say();
}

package com.lzhui.impl;

import com.lzhui.Dao.UserDao;

public class UserDaoImpl implements UserDao {
    @Override
    public void say() {
    //打印一句话
        System.out.println("4 UserDaoImpl say执行了。。。");
    }
}

传统方式就是在测试类中实例化接口然后调用它的方法,这里我们不做示范了,直接来看Spring是如何玩的。

将实现类交给Spring来管理
创建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">
       <!--Spring的入门配置========================-->
		<bean id="UserDao" class="com.lzhui.impl.UserDaoImpl"/>
</beans>

编写测试类

ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
		//getBean()中的UserDao 必须与配置文件bean中的id保持一致
        UserDao userdao=(UserDao ) applicationContext.getBean("UserDao ");
        userdao.say();

就可以调用UserDao的方法啦~。

IOC和DI

IOC:控制反转,将对象的创建权反转给了Spring。(简单的理解为这样,我就不用官方的说法了)
DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。

Spring的工厂类

工厂类的结构图
在这里插入图片描述
ApplicationContext继承BeanFactory。

BeanFactory :老版本的工厂类

  • BeanFactory:调用getBean的时候,才会生成类的实例

ApplicationContext :新版本的工厂类

  • ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化。
  • ApplicationContext有两个实现类。
    1.ClassPathXmlApplicationContext :加载类路径下的配置文件
    2.FileSystemXmlApplicationContext :加载文件系统下的配置文件

依赖注入的实现方式

拿上面的例子稍加修改
第一步创建接口(创建项目引入jar包就省略了)

package com.lzhui.Dao;

public interface UserDao {
    public void say();
}

package com.lzhui.impl;

import com.lzhui.Dao.UserDao;

public class UserDaoImpl implements UserDao {
    public UserDaoImpl() {
        System.out.println("1 UserDaoImpl构造执行了。。。");
    }

    @Override
    public void say() {
        
        System.out.println("4 UserDaoImpl say执行了。。。");
    }
}

创建一个UserService 接口

package com.lzhui.Dao;

public interface UserService {
     public void say();
}

在UserService 中用UserDao 接口的方法,所以定义一个UserDao 并设置set方法

package com.lzhui.impl;

import com.lzhui.Dao.UserDao;
import com.lzhui.Dao.UserService;

public class UserServiceImpl implements UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        System.out.println("3 UserServiceImpl set方法执行了。。。");
        this.userDao = userDao;
    }

    public UserServiceImpl() {
        System.out.println("2 UserServiceImpl构造执行了...");
    }

    @Override
    public void say() {
        this.userDao.say();
        System.out.println("5 UserServiceImpl 执行了。。。。");
    }
}

编写配置文件
是元素的子元素,它用于调用Bean实例中的setUserDao()方法完成属性赋值,从而实现依赖注入。name属性表示Bean实例中的相应属性名(此例中指UserServiceImpl中的UserDao)ref属性用于指定其属性值(如果是基本类型则用value,对象类型用ref)

<?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 id="UserDao" class="com.lzhui.impl.UserDaoImpl"/>
	
    <bean id="UserService" class="com.lzhui.impl.UserServiceImpl">
        <property name="userDao" ref="UserDao"></property>
    </bean>
</beans>

编写测试类

package com.lzhui.text;

import com.lzhui.Dao.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * Spring依赖注入
 */
public class text {
    public static void main(String[] args) {
        text t=new text();
        t.dome1();
    }
    public  void  dome1(){
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService=(UserService) applicationContext.getBean("UserService");
        userService.say();
    }
}

测试结果
在这里插入图片描述
由测试可以得知ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化,所以按配置文件从上到下的顺序先执行UserDaoImpl构造,然后执行UserServiceImpl构造,第三执行UserServiceImpl 里的set方法,其次再按顺序执行UserDaoImpl say方法,最后执行剩下的语句

好啦Spring的入门先简单写到这里啦
总结知识点:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值