spring的入门

目录

1.何为spring

2.Spring Ioc

3.如何使用spring

3.1 引入依赖

3.2 创建Spring的配置文件

3.3 创建一个Dao类

3.4 测试

4.BeanFactory和ApplicationContext的区别

5.获取bean的方式

6.bean的作用范围


1.何为spring

        Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。

特点:

1. 能帮我们低侵入/低耦合地根据配置文件创建及组装对象之间的依赖关系   //解耦
2. 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制等   //提高代码重用性
3.能非常简单的且强大的声明式事务管理     //使用xml或注解的方法,底层用到动态代理
4. 提供了与第三方数据访问框架(如JPA)无缝集成,且自己也提供了一套JDBC模板来方便数据库访问
5.提供与第三方Web框架无缝集成,且自己也提供了一套 SpringMVC 框架,来方便 Web 层搭建

为何使用spring:

降低耦合:对象与对象之间的耦合。

2.Spring Ioc

1.控制反转,是一种设计思想,就是原本在程序中需要手动创建对象的权利,交给spring框架管理
2.Ioc容器是实现Ioc的载体,Ioc容器实际上就是个Map(key,value),map中存放各种对象
3.Ioc容器就像一个工厂一样,当我们需要创建一个对象时,只需要配置好配置文件或贴注解即可,
  完全不用考虑对象时如何被创建出来的
4.将对象相互依赖的关系交给ioc容器管理,这样可以很大程度简化应用开发
5.使用Ioc的话,我们只需要配置好,在需要的地方引用就好,这大大的增加了项目的可维护性且降低了开发难度

6.使用对象的时候不再是我们直接new,而是将创建对象的权利交给框架中的核心容器IOC,需要使用对象的时候直接从容器中获取

3.如何使用spring

3.1 引入依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>
    </dependencies>

3.2 创建Spring的配置文件

<?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容器来创建
          id:bean的唯一标识。
          class: 类的全路径
    -->
    <bean id="userDao" class="com.qy151wd.UserDao01"/>
</beans>

3.3 创建一个Dao类

public interface IUserDao {
    public void show();
}
public class UserDao implements IUserDao{
    public void show(){
        System.out.println("************************");
    }
}

3.4 测试

public class UserTest {
    public static void main(String[] args) {
        //读取spring配置文件
        ApplicationContext app=new ClassPathXmlApplicationContext("spring.xml");
        //获取bean对象 userDao对应的ID名
        IUserDao userDao = (IUserDao) app.getBean("userDao");
        userDao.show();
    }
}

4.BeanFactory和ApplicationContext的区别

1.两者来自不同的包。

org.springframework.beans.factory.BeanFactory

org.springframework.context.ApplicationContext

2.BeanFactory 和ApplicationContext都是属于Spring 下的顶级接口,其中 BeanFactory 提供了基础的访问容器的能力,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖; ApplicationContext 属于BeanFactory 的子类,BeanFactory 所有的功能ApplicationContext 也是拥有,除此之外ApplicationContext还有用其他BeanFactory没有的功能,扩展的新功能如下:提供国际化的支持资源访问,如URL和文件 事件传递载入多个配置文件等 实现类常见有三个 。

3.单例模式下创建对象的时间点不一样:
ApplicationContext:(饿汉模式)只要一读取配置文件,马上就会创建配置文件中配置的对象。一般都是使用此种模式。
BeanFactory:(懒汉模式)什么时候getBean("id"),也就是说当根据id获取对象时,才会创建。

举例:

public class TestBeanFactoryAndApplication {
    //    public static void main(String[] args) {
//        //读取配置文件
//        ClassPathResource resource = new ClassPathResource("application.xml");
//        //解析配置文件
//        XmlBeanFactory factory = new XmlBeanFactory(resource);
//        Object userDao = factory.getBean("userDao"); //拿到哪个bean时才会调用构造函数创建该bean.
//
//        //当使用到bean对象时,spring才会帮你创建.
//        Object people = factory.getBean("people");
//    }
    public static void main(String[] args) {
        //在加载spring容器时,spring会把配置文件中所有的bean创建好。
        ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
    }
}

5.获取bean的方式

1.通过bean.xml文件中bean标签的id的值获取bean(使用默认构造方法)

IUserDao iUserDao= (IUserDao) app.getBean("userDao");
//根据bean的id获取Bean对象,强制转换.

2.通过类型去获取

确保bean的类型是唯一的 不然会报错

IUserDao userDao = app.getBean(IUserDao.class);  //通过类型获取bean对象。

3. 通过 id + 类型去获取

IUserDao userDao = app.getBean("userDao2", IUserDao.class);

6.bean的作用范围

bean对象的作用范围调整需要配置scope属性,设置单例还是多例(只针对ApplicationContext接口来说,默认是单例的

单例:---无论创建多少次对象 他们始终指向同一个实例。

scope:常用 singleton,prototype

​ singleton:单例的(默认值)当加载配置文件时,就会创建对象。

​ prototype:多例的(当getBean时才会创建对象)

​ request:作用于请求范围---同一个那么使用bean同一个。

​ session:作用于会话范围---同一个会话

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值