一、spring的概念
spring是一个开源的,轻量级控制反转和面向切面的容器框架,解决企业应用开发的复杂性,降低耦合,更易于测试。
spring春天。如果写一个小的项目,我们可以在项目中想创建一个对象就创建i个对象,但对于大型项目来说,可能需要依赖几百个类,类与类关系也非常复杂,我们就不能把创建对象和维护对象之间的关系放到项目中,可以采用生活中分工合作的方式,把对象的创建和维护关系给剥离出来,找一个工厂类的东西去干这些事,这样项目如果需要对象了,就从工厂类中去取。
spring就是为了让我们以后能够做大的项目准备的。spring核心的功能就是一个工厂模式,spring相当于为你的项目专门成立一个工厂,这个工厂负责创建对象,委会对象之间的关系,以前是直接new,现在从spring的工厂里面获取。
二、spring的bean的常用属性
scope
scope用来配置bean对象是否是单例测试。单例模式是java的23种设计模式之一,指在这个项目运行过程中一个类的对象只会实例化一次。一般,工厂类的对象都是单例模式。非单例模式叫多例模式或者原型模式。
spring工厂中的对象默认都是单例模式,如果我们想把对象配置成多例模式,可以配置bean的scope属性,scope常用的两个取值:
singleon默认值 单例模式
prototype 原型模式 多例模式
单例模式下,对象是在工厂初始化的时候创建的。多例模式是在工厂初始化之后,获取对象的时候创建的。
autowire
autowire用来配置spring对象属性的默认的装配方式。有三个取值
no:默认值 不启用自动装配
byType:根据类型自动装配
byName:根据名称自动装配,一般bean的name如果不声明 默认值取的就是id
三、spring的bean的 属性注入的两种方式
设值注入
设值注入要求:
要求属性在实体类中必须有getter和setter方法,然后在spring的工厂中就可以使用property标签进行设值注入。
构造注入
通过类的构造方法的方式注入
第一步,在要bean对应的class中创建有参的构造
第二步,在spring的工厂中配置
注:设值注入的优缺点:使用起来比较直观,以后项目中大多数情况都采用设值注入。必须给属性是生成getter和setter
构造注入的优缺点:不用给属性生成getter和setter方法 了,但是看起来不太直观。
四、spring的注解配置
使用bean的方式配置spring比较麻烦,开发中经常使用注解的方式配置spring
1 package com.aaa.spring.entity; 2 import org.springframework.beans.factory.annotation.Autowirimport org.springframework.stereotype.Component; 3 import java.security.spec.DSAGenParameterSpec; 4 /** 5 * 组装E470笔记本 6 */ 7 @Component 8 public class E470 { 9 //这里需要依赖接口 10 //Autowired默认按类型自动装配 11 @Autowired 12 private Display display; 13 @Autowired 14 private Cpu cpu; 15 /** 16 * 笔记本工作的方法 17 */ 18 public void work(){ 19 //cpu进行计算 20 cpu.calc(); 21 //显示器显示 22 display.display(); 23 }public Display getDisplay() { 24 return display; 25 } 26 public void setDisplay(Display display) { 27 this.display = display; 28 } 29 public Cpu getCpu() { 30 return cpu; 31 } 32 public void setCpu(Cpu cpu) { 33 this.cpu = cpu; 34 } 35 }
@Component注解
同我们使用bean的方式创建对象,加了@Component注解的类会在spring的工厂中创建该对象,该对象的id为@Component注解的类的名称,但是首字母是看第二个字母的,若第二个字母是小写,首字母小写,第二个字母大写,首字母就为大写。
@Autowird自动按类型装配
注:需要在配置文件中扫描配置@Component类所在的包
总结:
1、spring是一个容器类的框架 两个作用:1、创建对象 2、维护对象之间的关系
2、spring的基本配置
3、常用的bean的属性 scope singleton prototype
4、bean注入的两种方式 设值注入 属性必须有getter和setter 构造注入 必须要有有参构造
5、spring的注解配置
面试题:
1、你怎么理解spring的di和ioc
di依赖注入描述对象之间的依赖关系 在spring工厂中设值注入或者构造注入维护关系
ioc 控制反转 描述对象创建方式的改变 原来创建对象在程序中,用来spring之后在工厂中创建独享
2、spring中@Autowired和@Resource的区别是什么
@Autowired按类型自动装配
@Resource先按类型自动装配 再按属性名称自动装配
原文地址:https://www.cnblogs.com/yanpingping/p/10896944.html