Spring入门

Spring

一.什么是Spring,作用是什么?

1.Spring指的是Spring Frame Work,是包含了众多工具方法的IOC容器。

2.IOC: Inversion of Control :控制反转, 将对象的控制权交给了Spring。

例如:A类需要使用B类,现在只需要从Spring当中去取B,不用再创建B类的对象来使用B,B的控制交给了Spring。

IOC容器具有对对象的存储和获取的能力,从而,使用Spring只需要将对象存入和获取就可以来实现对对象的使用,对象的创建等操作就不需要关心。

二.依赖注入DI

Spring实现了依赖注入。在IOC运行期间,动态的把某种依赖关系注入到对象当中。从而使某些对象之间产生魔咒依赖关系。

*面试题:DI和IOC区别:

IOC是一种思想,DI是一种实现,他们描述的是一件事情。

三. 传统Spring的创建和使用(不使用Springboot)

1.Spring的创建

1.创建普通maven项目

2.添加依赖(Spring-context)

3.添加启动类:包含public static void main的类(目的是为了把项目启动起来)

4.创建Spring配置文件

在resources文件下创建XXXXXXX.xml配置文件,将下面内容添加导入

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    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-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/s ... ing-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
​

2.Spring的使用

(1)将所需要管理的类放到Spring容器当中(放置对象)

在上述配置文件当中添加

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>

上述userDao使创建出来的对象的名称,

com.itheima.dao.impl.UserDaoImpl是所要创建对象的类

(2)从Spring容器当中获取对象(拿对象)

先获取上下文,再从容器当中去拿

//1.获取Spring上下文

方法一:ApplicationContext context =new ClassPathXmlApplicationContext("所创建的Spring的核心配置文件名");

方法二:

BeanFactory beanFactory=new XmlBeanFactory(new ClassPathRescource(Spring核心配置文件路径))

从容器中获取对象:

方法一:

//1.获取Spring上下文
ApplicationContext context =new ClassPathXmlApplicationContext("所创建的Spring的核心配置文件名");
//2.从上下文当中获取所需要的对象
User user =(object)context.getBean();

方法二:

//通过bean的类型获取对象
User user=context.getbean(User.class);
    user.XXX   //直接使用里面的方法

注意:第二种方式常见对象的情况下,当Spring中存放了不止一个对象的情况,就会报错。

方法三:

//使用getbean的构造方法,传参数name和类两个参数从而保证所获取到的对象的唯一性
User user=context.getBean("user1",User.class);
user.XXXXXXX;  //使用类方法

*面试题:ApplicationContext和BeanFactory的区别

1.继承关系 前者是后者的子类,前者提供了更好的一些支持和访问方法

2.性能方面有所差异,前者是启动的时候,虚拟机就全部加载了存进去的所有对象,后者是需要拿的时候才回去加载,因此更加轻量级。前者会更快一些。

四.更简单的Spring创建和使用

先创建Spring配置文件

1.更简单的存

通过注解告诉Spring要管理哪些类(更简单的存)

类注解: @Controller @Service @Respository @Component @Configuretion

方法注解:@Bean

@Controller (控制器):验证接口参数的正确性,或者参数的转换

@Service(服务):一般是服务的编排和汇总,做服务的调度等

@Respository(仓库):数据库相关的内容

@Component (组件)

@Configuretion(配置)

首先通过@XXX的注解方式将类交给Spring来管理,然后再通过context.getBean(“创建对象的名字”)。注意:智利的对象的名字一般默认创建的是将类名首字母小写,当类名的前两个字母都是大写的情况,则对象的名字就是类名本身。(例:UController)从源码中得到上面的结论

五大注解的联系:源码里面都是依托于Component

在注解之后加上括号就可以对默认创建的对象的名称进行重命名。

五大注解可以和Bean共存,大部分需要Spring管理的对象都在某一个路径下的,同时有一小部分需要管理的对象需要

依赖:

Controller依赖Service,Service依赖DAO

2.更简单的取(对象的装配)

(1)属性注入:

@Autowired:将属性注入到当前类及对象中,与属性对象的名称无关,是根据类型是获取对象的

@Resouce:jdk提供的注入的方式

*面试题:@Autowired与@Resouce的区别

前者是Spring提供的,后者是jdk提供的

1.第一个是根据类型去查找对应的bean,如果查找有多个,在跟去名称去查找

加上@Qualify就可以指定查找具体名称的bean ,两者结合就相当于bean

2.直接根据名称去查找

最终查找不到就会报错

(2)Setter方法注入

(3)构造函数注入

五.Bean作用域和生命周期

1.作用域:

(1)通过@Autowired注释。单例作用域:两个类都在自己的作用于当中创建同一个类的一个对象,并且名字相同,此时两个变量都指向同一个堆里面的对象。Spring之帮你管理一个相同的对象。适合于无状态的Bean ,所有线程都可以使用同一个Bean。

(2)多例作用域(原例)多例模式,每创建一个对象都会创建一个新的实例。

通过@Scope(ConfigurableBean.SCOPE_PROTOTYPE)进行注释,就是多例

(3)请求作用域request:每一次http请求都会创建一个Bean。(仅限SpringMVC使用)

(4)绘画作用域session:在一个session当中只创建一个实例(仅限于SpringMVC)

(5)application:全局作用域

2.生命周期

1.实例化Bean(为Bean分配内存空间)

2.设置属性(Bean的注入和装配)

3.初始化

执行各种通知; 执行初始化前置方法,执行初始化方法; 执行初始化后置方法

4.使用Bean

5.销毁Bean

先执行注解的方法在执行在配置文件中的方式。(注解是在新的方式,官方推荐的)

六.SPring的执行流程和生命周期

执行流程:

1.启动Spring容器

public static void main(String args){
    ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml")//获取配置文件上下文
        
        
}

2.根据配置文件,Bean的初始化

根据扫描文件去扫描路径下有哪些类有注解,对Bean进行初始化

3.把对象放到spring中

将上一步中初始化的一些对象放到spring容器当中管理起来

4.装配对象

把依赖的对象注入到相应的地方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值