一、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

 package com.aaa.spring.entity;
import org.springframework.beans.factory.annotation.Autowirimport org.springframework.stereotype.Component;
import java.security.spec.DSAGenParameterSpec;
/**
* 组装E470笔记本
*/
@Component
public class E470 {
//这里需要依赖接口
//Autowired默认按类型自动装配
@Autowired
private Display display;
@Autowired
private Cpu cpu;
/**
* 笔记本工作的方法
*/
public void work(){
//cpu进行计算
cpu.calc();
//显示器显示
display.display();
}public Display getDisplay() {
return display;
}
public void setDisplay(Display display) {
this.display = display;
}
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
}

@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先按类型自动装配  再按属性名称自动装配

Spring总结————spring核心Core的更多相关文章

  1. 最全面的改造Zuul网关为Spring Cloud Gateway(包含Zuul核心实现和Spring Cloud Gateway核心实现)

    前言: 最近开发了Zuul网关的实现和Spring Cloud Gateway实现,对比Spring Cloud Gateway发现后者性能好支持场景也丰富.在高并发或者复杂的分布式下,后者限流和自定 ...

  2. Spring Cloud Stream 核心概念

    Spring Cloud Stream简介 Spring cloud stream是一个构建与Spring Boot和Spring Integration之上的框架,方便开发人员快速构建基于Messa ...

  3. Spring IOC容器核心流程源码分析

    简单介绍 Spring IOC的核心方法就在于refresh方法,这个方法里面完成了Spring的初始化.准备bean.实例化bean和扩展功能的实现. 这个方法的作用是什么? 它是如何完成这些功能的 ...

  4. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

  5. 获取spring的IOC核心容器,并根据id获取对象

    public class Client { /** * 获取spring的IOC核心容器,并根据id获取对象 * ApplicationContext的三个常用实现类 * classPathXmlAp ...

  6. Spring Boot 最核心的 25 个注解,都是干货!

    学习和应用 Spring Boot 有一些时间了,你们对 Spring Boot 注解了解有多少呢?今天栈长我给大家整理了 Spring Boot 最核心的 25 个注解,都是干货! 你所需具备的基础 ...

  7. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...

  8. Spring MVC的核心控制器DispatcherServlet的作用

    关于Spring MVC的核心控制器DispatcherServlet的作用,以下说法错误的是(  )? 它负责接收HTTP请求 加载配置文件 实现业务操作 初始化上下应用对象ApplicationC ...

  9. spring框架 AOP核心详解

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...

  10. 【转】Spring学习---Spring IoC容器的核心原理

    [原文] Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国. IoC和DI的基本概念 IoC(控制反转,英文含义:Inverse of Control)是Spr ...

随机推荐

  1. 为何印度打车软件Ola,也难逃“资本合并”命运?

    从全球市场来看,共享经济已经引发了多场具有颠覆性的风暴.尤其是在与大众关系紧密的衣食住行方面,诞生了具有强势影响力的独角兽企业.如,共享打车企业Uber.共享房屋出租企业Airbnb等.而鉴于每个国家 ...

  2. IT男频繁猝死背后的心理探秘

    "深圳36岁IT男猝死酒店马桶上"这条新闻再次成为人们眼球的焦点,每每发生这样的事情,难免让人扼腕唏嘘,他们本该是风华正茂的年纪,家有老母贤妻爱子,甚至房子车子票子都不缺,该是一边 ...

  3. unittest(20)- 自动更新表格中数据(5)

    # 1. get_data.py from tools import project_path import pandas as pd class GetData: Cookie = None Add ...

  4. 我是一个Bug, 终极大Bug

    我是一个Bug ,在这个系统中潜伏很久了,历经多轮测试的严酷考验而屹立不倒,如果Bug界按难度分类的话,我绝对属于地狱模式. 现在,我就等待一个倒霉蛋来触发, 可是他老是不来. 其实不能叫倒霉蛋 , ...

  5. 陪诊App,陪孝子找回人性

    2015年开始,越来越多的陪诊App开始上线,纷纷迎来了自己的第一批用户,同时,也迎来了大量资本的青睐,有些名气的问诊app甚至能单轮获得超过1000万元的融资,事实上,投资者是否青睐,简直就是中国新 ...

  6. 基于SR-IOV的IO虚拟化技术

    服务器配置要求 x86服务器内存不能低于32GB 服务器CPU需要支持虚拟化和设备虚拟化 VT-x VT-d,SR-IOV 功能,并且在BIOS中能启用了SR-IOV 网卡配置最起码为千兆配置 支持 ...

  7. Apple store,奢华背后的辛酸

    store,奢华背后的辛酸" title="Apple store,奢华背后的辛酸">    2000年的时候,乔布斯提出了要建造苹果直营店,也就是Apple st ...

  8. elasicsearch数据自动清理脚本

    elasticsearch随着保存的数据越来越多,磁盘占用越来越大,有必要进行定期自动清理. 直接上脚本 cat es-index-clear.sh #/bin/bash #查看索引信息 #curl ...

  9. 在博客中显示图片_Mac版

    主要是防止自己忘掉 为了解决一开始自己想在写入的博客中添加本地图片,直接链接的话在自己的电脑倒是可以显示图片,但是在别人的电脑上就没办法加载图片了,问各路大神也没人愿意解答,百度也没有想要的答案,只好 ...

  10. [ASP.NET Core 3框架揭秘] 服务承载系统[1]: 承载长时间运行的服务[上篇]

    借助.NET Core提供的承载(Hosting)系统,我们可以将任意一个或者多个长时间运行(Long-Running)的服务寄宿或者承载于托管进程中.ASP.NET Core应用仅仅是该承载系统的一 ...