首页 > 其他分享 >Spring学习笔记

Spring学习笔记

时间:2023-02-27 16:46:21浏览次数:33  
标签:容器 Service 对象 Spring 笔记 学习 Bean 创建 IOC

1.Spring作为轻量级框架的两大核心:IOC、AOP、事务处理(基于AOP)。

2.经过学习要会什么?

   核心概念IOC、DI  >>>>整合mybatis >>>>AOP概念及操作>>>>事务实用开发

3.架构图:

 

4.为什么提出了IOC概念?

    为了解决代码耦合度偏高,想要做到使用对象时在程序中不主动使用New产生对象,转换为外部提供对象。由此引入了IOC(控制反转),原来是程序创建改为Web创建对象

5.IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean。

6.Service类依赖Dao对象才能运行,而IOC容器中只给了Service对象,因此运行还会保存。又因为IOC容器中包含Service、Dao对象,由此IOC容器将Service和Dao绑定。即DI(依赖注入),在容器中如果两个Bean对象存在依赖关系,IOC容器会自主建立bean与bean之间的依赖关系,称为依赖注入。

7.充分解耦的目标是如何实现的?

   先使用IOC容器管理Bean(IOC)>>>>再在IOC容器中将有依赖关系的Bean进行关系绑定(DI)。由此达到使用对象时不仅可以从IOC容器中直接获取,并且获取到的Bean已经绑定了所有的依赖关系。

8.使用IOC时要考虑什么?

    ①IOC要管什么?       Service和Dao

    ②如何将被管理的对象告知IOC容器?    通过配置文件

    ③被管理的对象交给IOC容器,如何获取到IOC容器?  Spring中有接口

    ④IOC容器得到后,如何从容器中获取Bean?   接口中的方法

    ⑤使用SPringl技术导入哪些坐标?  pom.xml中导

9.初识IOC{

Spring坐标,由此可以在Resource目录下创建XML文件(Spring config) applicationContext.xml

 

 

  配置Bean的标签 <bean/>  要管理的对象由class =""告知,例。要配实现类,非接口。起别名用id =" " ,写程序的时候用。

  

 

 

获取IOC容器时,由于ApplicationContext是一个接口,故不能new对象要new实现类Class....,且要加载配置文件。获取bean时通过IOC容器中.getBean方法时获取的是对象,注意转类型。}

10.初识DI{

 

 

 业务层代码中不在使用new的方式创建dao对象,且提供相应的set方法。要将Dao放到Service中,即Service中有个属性叫Dao。第一个bookDao是Service中的属性,ref中的bookDao是xml文件中的。

11.关于Bean?

    ①别名:Bean是可以起多个别名的,这个异常只存在两个问题,实现类中getBean中的名称错误/xml文件中name =" "出错 不同别名可用逗号,分号;空格隔开,都会起作用。

 

 

    ②作用范围:Spring默认创建的Bean对象是单例的,即地址相同。要创建多例的,在<bean/>中scope=" "中配置。  singleton---单例,prototype----多例

为什么Bean创建的对象默认是单例的? 因为容器存储地址总归是有限的,要是默认多例那就再创建对象时用一个造一个,无穷无尽。不符合复用效果

 哪些适合交给容器管理的Bean?表现层对象----service   业务层对象----service  数据层对象----Dao  其它工具类对象

不适合的? 封装实体的域对象。

    ③bean是怎么创建的?

        三种实例化方式:

        Ⅰ无参构造:公共的,私有的无参构造方法都能访问,蕴含反射知识。对于Spring的报错,(从最后一行开始看) 如果无参构造有参数就会报Instantiation of bean failed

 

 

        Ⅱ静态工厂:工厂创建对象回顾,创个Service并实现Imp,再factory包下,在启动类

 

通过工厂创建Bean如果没有factory-method,此时创建的是Factory对象。我们需要的是Factory方法中创建的对象,故要告诉它是工厂中的哪个方法。

 

 

       Ⅲ实例化工厂:(非静态)实例化工厂第一步是要先创建个对象出来,

 为了简化这种写法,这是一种标准写法,FactoryBean是一个接口,里面的泛型需要创建哪个对象就填哪个。 getobject替代原来静态工厂中的getUserDao方法。getObjectType即对象是什么类型的。

 在这个方法中修改创建的Bean对象是单例还是多例

 

标签:容器,Service,对象,Spring,笔记,学习,Bean,创建,IOC
From: https://www.cnblogs.com/SLXYGuo/p/17160286.html

相关文章

  • 韦东山2440-学习笔记-ADC触摸屏
    1.程序员需要关注的硬件特性1.1ADC的特性输出数据用多少位描述10bit模拟输入最大值0-3.3V采样/转换速度每秒转换500*1000次1.2看本SoCAD......
  • numpy学习
    importnumpyasnp#a=np.array([1,2,3])#print(a[0])#b=np.array([[1,2,3],[4,5,6]])#print(b[0])#print(b.shape)#创造numpy的方式#np.arra......
  • java netty socket实例:报文长度+报文内容,springboot
    前言说实话,javanetty方面的资料不算多,尤其是自定义报文格式的,少之又少自己写了个简单的收发:报文长度+报文内容发送的话,没有写自动组装格式,自己看需求吧,需要的话,自己完......
  • SpringBoot中对拦截器和过滤器的理解
    1、两者的关系   2、过滤器的使用步骤实现Filter接口,并加上@WebFilter注解@Slf4j//filterName为该过滤器的名称;//urlPatterns对哪些url进行拦截@WebFil......
  • Spring依赖注入,该放弃@Autowired注解了
    最近在IDEA中用@Autowired注解时,发现IDEA不推荐使用这个注解了。原因是Spring官方不再推荐这种依赖注入的方式。具体原因不再详细说明。目前,Spring官方推荐的注入方式是......
  • 学习笔记
    绑定事件bindtap="函数名",函数传参xxdata-xx="1122"js里函数(e){获取参数varx=e.currentTarget.dataset.xx;或者e.target.dataset.xx}跳转页面wx.navigateTo(......
  • python+playwright 学习-15.录制视频功能
    前言使用Playwright,您可以为测试录制视频。录制视频在测试结束时浏览器上下文关闭时保存。如果您手动创建浏览器上下文,请确保browser_context.close(),会在调用close......
  • Ubuntu-深度学习环境搭建(yolov3)
    layout:posttitle:深度学习环境搭建subtitle:深度学习环境搭建date:2021-04-25author:Yinheader-img:img/post-bg-cook.jpgcatalog:tru......
  • 学习swoole之前,你需要知道的几件事
    学习swoole需要的前置知识学习一项新的技术,最重要的就why、what、how。这门技术是什么,为什么用它,要怎么用它。这篇文档的作用就是为了解释what与why。php-fpm与swoole的......
  • Jmeter学习:插件
    第三方插件官方下载网址:https://jmeter-plugins.org/install/Install/第三方插件官方文档网址:https://jmeter-plugins.org/wiki/Start/插件安装过程如下:1、下载plugin......