Spring基本概要

Spring入门

传统Javaweb存在的问题

  1. 层与层之间紧密耦合,接口和具体实现之间紧密耦合。(通过BeanFactory进行管理)
  2. 通用的功能耦合在业务代码中。就比如说接入数据库、记录日志等。(AOP,增强Bean对象的功能)

IoC、DI、AOP思想

IoC控制反转

指原来在程序中船舰Bean的权利反转给第三方

DI注入依赖

强调Bean之间的关系,这种关系第三方负责设置。例如Bean1的产生依赖于Bean2的存在

AOP切面编程

主要实现就是Proxy,对某一个Bean进行功能增强

BeanFactory

通过配置清单构建各种Bean类

  1. 需要导入Spring-context包

  2. 创建对应的Bean类以及相应的xml配置文件

  3. 测试Bean的创建是否成功

    public static void main(String[] args) {
        // 创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 创建一个读取器(xml文件)
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        // 读取配置文件给工厂
        reader.loadBeanDefinitions("beans.xml");
        // 原本返回的是一个Object对象
        UserService userService = (UserService) beanFactory.getBean("userService");
        System.out.println(userService);
    }
    

数据传入

在配置文件中设置property实现参数的传入,这也就是控制反转。

<bean id="userService" class="com.itheima.service.impl.UserServiceimpl">
    <!-- 将userDao传入到setUserDao方法中 注意这边使用的是ref标签 -->
    <property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.itheima.service.dao.impl.UserDaoImpl"/>

Java中类代码

private UserDao userDao;

// 该方法由BeanFactory进行调用,从容器中获取UserDao设置到此位置
public void setUserDao(UserDao userDao){
    System.out.println("BeanFactory executing: " + userDao);
    this.userDao = userDao;
}

BeanFactory和ApplicationContext之间的关系

BeanFactory:

  1. Spring早期接口,Bean工厂
  2. 更偏向于底层
  3. 在首次getBean的时候才进行Bean创建,有点像延迟加载

ApplicationContext:

  1. Spring后期更高级的接口,Spring容器
  2. 继承了BeanFactory接口,并且内部维护了BeanFactory的功能
  3. 在加载配置文件过程中,就创建了所有的Bean实例对象

常用的ApplicationContext的三个作用

  1. ClassPathXmlApplicationContext:加载类路径下的xml配置的ApplicationContext
  2. FileSystemXmlApplicationContext:加载磁盘路径下的xml配置的ApplicationContext
  3. AnnotationConfigApplicationContext:加载注解配置类的ApplicationContext
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值