Spring第一天 IOC 控制反转JavaBean规范 Bean的作用域 生命周期 依赖注入

Spring:是软件框架,是软件半成品,包含了很多组件。
核心组件:ioc容器
IOC控制反转:

  1. 由代码自己控制对象的创建,称为:主动控制(自己new对象,自己炒番茄炒蛋)
  2. 有一个组件容器管理对象,应用从容器中获得对象,称为:控制反转(spring创建对象,厨师做酸菜鱼)
    面试时问到什么是控制反转?—》由spring容器创建并管理对象,称为控制反转

Ioc容器就是Java Bean组件容器
1.用于创建管理JavaBean对象,
2.用于替代传统的工厂模式,
3.由于其提供了DI功能,可以实现组件的解耦
案例:
在这里插入图片描述

使用spring容器自动创建对象:

  1. 导包,导入spring核心组件ClassPathXmlApplicationContext
  2. 写一个类,里面什么都不做,输出一个helloword
  3. 写一个xml文件,做一个登记,写上类的全名,
    相当于在饭馆吃饭写给厨师的菜单,而spring就是这个厨师
    4.new一个xml:new ClassPathXmlApplicationContext(“beans.xml”)
    其实就是spring容器在启动的时候根据xml文件创建了一个对象
    如何使用这个对象
  4. Bean=ctx.getBean(“demo”);
  5. Println(bean);

新建项目:

  1. 新建一个maven项目,选择一个jar(桌面应用程序),之后用war(网页应用程序)
  2. 导包,在pom配置文件中添加如下代码


    org.springframework
    spring-context
    4.3.9.RELEASE


    3.创建一个类,里面写上hello,world
    4.写配置文件:去下载一个spring的配置文件,复制到resouce文件夹下面,在配置文件后面加上
  3. 写一个类,在类中创建一个Spring容器,需要提供配置文件
    ClassPathXmlApplicationContext ctx=
    new ClassPathXmlApplicationContext(“beans.xml”);
    spring启动的时候会自动加载配置文件beans.xml,并且根据配置文件的内容创建DemoBean对象,spring容器提供了getBean方法,用于获取IOC创建的对象
    DemoBean obj=(DemoBean)ctx.getBean(“demo”);
    System.out.println(obj);

缺少包:把m2文件夹删除,然后项目右键-》maven-》updateforce
@Override:告诉java编译器,检查后续方法是否是重写
Java默认在object上定义的方法是toString方法,toString默认方法返回值输出类名
Id不能重复,重复的时候会报错

###Java Bean规范
Java类的声明规范,是一套通行的规则,spring默认情况下采用java bean规范

  1. 有包package
  2. 有无参数构造器 e.g:public TestBean(){ a=80;}
  3. 需要实现序列化接口 e.g:public class Foo implements Serializable
  4. 包含由getxxx 和setxxx 方法声明的“Bean属性”XXX
    Get set方法就是bean属性
    –“Bean属性不是对象属性
    –对象属性是指 在类中声明的实例变量
    –一般情况下 对象属性和Bean属性同名
    例子
    Class Student{
    Int age=5;//对象属性

Int getAge(){//Bean属性age
Return age;
}
Int getOld(){//包含只读的“Bean属性” old
Return age;

}
Int setOld(){//包含只写的“Bean”属性 old
Return age;
}
}”
@Before 之前,在测试案例之前执行的方法,一般用于初始化
@After//之后,在测试案例之后执行的方法,一般用于回收资源
@Test//测试案例方法
可以把不同的方法分别放在@test下面,当想调用哪个方法的时候就选中这个方法然后运行
Alias 别名 就是给Bean起了新的“绰号”

String可以使用id或name属性声明Bean

#Bean的作用域

  1. 默认情况下Spring管理的Bean对象是“单例”的(单例:指在一个应用软件中,对象永远唯一的现象称为“单例”)
    1.在容器启动时候,创建Bean对象
    2.在getBean调用时候,返回Spring容器中的Bean对象,多次调用getBean方法返回的是同一个对象的引用
    2.在配置文件bean标签上scope属性,可以设置这种“多例”的Bean对象
    1.<bean id=…class=…scope=”prototype”>prototype原型
    2.Spring容器启动时候不创建对象
    3.每次调用getBean创建新对象
    #对象生命周期管理
  2. 单例对象的时候
  3. 创建对象时候执行 init-method属性指定的方法
  4. 关闭容器时候 执行deatroy-method属性指定的方法
  5. 多例对象时候
  6. 创建对象时候执行 init-method属性指定的方法,每个对象都会调用一次init方法
  7. 关闭容器时候,不会执行destroy-method属性指定的方法
    #对象延迟实例化
    当设置了lazy-init="true"以后,在容器初始化时候不会创建Bean对象,在第一次使用时候创建Bean对象
    e.g:
    #DI
    全称Dependency Injection 依赖注入
    基本原理是将一起工作具有关系的对象,通过构造方法参数或方法参数传入建立关联,因此容器的工作就是创建bean时注入那些依赖关系。
    IOC是一种思想,而DI是实现IOC的主要技术途径
    DI主要有两种注入方式,即Setter注入和构造器注入
    在这里插入图片描述

把id为axe的对象注入给worker
Name=”axe”表示将使用Bean属性方法进行注入
Ref=”axe”表示将id为axe的Bean对象注入到Bean属性中
例子:光头强砍树的斧头,是李师傅做的斧子
用的时候就将斧子对象注入到光头强中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值