Day1. Spring

1 课程描述

  • IoC基础容器,主要涉及Bean对象的管理。

  • AOP面向切面编程,主要涉及切面配置,声明式事务控制

  • Spring整合Web环境。

  • Web层解决方案-SpringMVC.

1.1 IoC、DI和AOP思想的提出

由于传统的JavaWeb出现的问题:

问题1:层与层之间紧密耦合在一起,接口与具体实现紧密耦合在一起。

问题2:通用的事务功能和日志功能耦合在代码中。

基于上述问题提出IoC、DI和AOP思想

IoC:Inversion of Control,程序创建Bean的权利反转给第三方。

DI:Dependency Injection 依赖注入,强调Bean之间的关系,Bean2是Bean1的属性

AoP:面向切面编程,主要实现方式是代理

2 Spring 框架的诞生

spring是一个开源的轻量级Java开发应用框架,可以简化企业级应用开发。Spring解决了开发者在JavaEE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。是当前企业中Java开发几乎不能缺少的框架之一。Spring的生态及其完善,不管是Spring哪个领域的解决方案都是依附于在SpringFramework基础框架的。

2.1 Spring 快速入门

  1. 导入坐标

  1. 编写UserService接口与其实现,只建立java文件,不用写代码。

  1. 配置到XML文件

  1. 写测试代码。

Bean文件

<?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">
<!--id表示唯一标识,class表示bean的名字-->
    <bean id="userSerice" class="cn.msf.service.UserSerice">

    </bean>
</beans>

测试代码1:基于BeanFactory的bean管理

package cn.msf.test;

import cn.msf.service.UserSerice;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;

/**
 * @author : msf
 * @date : 2023/1/6
 */
public class BeanFactoryTest {
    public static void main(String[] args) {
        // 1. 创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 2. 创建读取器,读取xml文件
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        // 3. 读取器配置文件给工厂.
        reader.loadBeanDefinitions("beans.xml");
        // 4. 测试
        UserSerice userSerice = (UserSerice) beanFactory.getBean("userSerice");
        System.out.println("userSerice = " + userSerice);
    }
}

总结:这个也是很鸡肋啊,每次创建service文件都要使用getBean有没有简单的方式呢?可以使用注解形式进行简化。


我们都知道三层架构,dao层要注入到service中,service要注入到controller层中。spring如何进行依赖注入呢?


测试代码2:基于ApplicationContext的bean管理;

ApplicationContext 称为Spring容器,内部封装了BeanFactory,比BeanFactory功能更丰富更强大,使用ApplicationContext 进行开发时,xml配置文件的名称习惯写成applicationContext.xml。

package cn.msf.test;

import cn.msf.service.UserSerice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author : msf
 * @date : 2023/1/6
 */
public class AppContextTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserSerice userSerice = (UserSerice) context.getBean("userSerice");
    }
}

因为内部集成了beanFactory,因此可以不用再创建beanFactory,而可以直接加载xml文件。然后对bean进行管理。
这里还有一个小点,ApplicationContext是接口,要通过子类创建,因此可以使用ctrl + H查看。

3 总结:

如何简单的理解IoC呢?我们可以把他简单抽象成Map+反射。map主键存入userService,值存入它的全限定名。然后知道全限定名以后利用反射思想进行创建。当然这一切都想要读取xml,然后通过反射生成对象存入到spring容器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兜兜转转m

一毛钱助力博主实现愿望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值