Ruby's NoteBook - Spring
type: channel
link: https://slugyao.top/index.php/tag/Spring/
items: Spring笔记

Spring笔记
type: item
date: 2024-11-05T15:58:00+08:00
description: 最近在学一些后端的技术，零零散散记了一些相关的知识点，有关Spring的内容基本就集中在这一篇。看的教程网址：教程链接Spring核心概念IoC(Inversion of Control)控制反转使用对象时，由主动的new来产生对象转变为外部提供对象，此过程中对象创建控制权由程序转移到外部Spring提供一个容器IoC容器来充当“外部"这个容器复杂对象的创建、初始化等一系列工作，被创建或被管理的对象在IoC容器中统称为Bean目标：充分解耦使用IoC管理Bean(IoC)在IoC容器中将有依赖关系的bean进行关系绑定(DI)IoC思路分析IoC管理Service和Dao用配置将被管理的对象告知IoC容器用接口获取IoC容器用接口方法从容器中获取Bean1）导入spring坐标2）定义Spring管理的类(接口)3）创建Spring配置文件，配置对应的类作为Spring管理的Bean 注意：bean定义时id属性在同一个上下文中不能重复DI入门案例依赖注入，全称 Dependency Injection，简称 DI依赖关系的维护就称为依赖注入基于IoC管理BeanService中使用new形式创建的对象不能保留Service中需要的Dao对象通过方法进入Service中1）删除使用new形式创建对象的代码2）提供依赖对象对应的set方法3）配置service和dao之间的关系 BeanBean基础配置标签id:bean的id，使用容器可以通过id值获取对应的bean，在一个容器中id值唯一class:bean的类型，即配置的bean的店路径名name:bean的别名，可以使用空格分隔多个别名scope:作用范围，可以选择单例或者多例，默认单例适合交给容器进行管理的Bean表现层对象业务层对象数据层对象工具对象Controller:控制层，接受前端发送的请求，对请求进行处理，并响应数据Service:业务逻辑层，处理具体的业务逻辑Dao:数据访问层，复杂数据访问操作，包括数据的增删改查Bean实例化实例化Bean的方式用构造方法(无参)创建对象，如果没有无参构造方法将抛出异常BeanCreationException静态工厂实例化Bean， 实例工厂初始化Bean 可以使用接口FactoryBean<>来代替public class UseDaoFactoryBean implements FactoryBean<UserDao>{ public UserDao getObject() throws Exception{ return new UserDaoImpl(); } public Class<> getObjectType(){ reuturn UserDao.class; } }配置 Bean的生命周期生命周期：从创建到销毁的完整过程初始化容器创建对象执行构造方法执行属性注入(set)执行bean初始化方法使用bean关闭/销毁容器执行bean销毁方法bean的生命周期控制：在bean创建后到销毁前做一些事情加载properties文件开启context命名空间<? xml version="1.0" encoding="UTF-8"?> < beans xmlns=" http://www.springframework.org/schema/bean s" xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns: context=" http://www.springframework.org/schema/context " xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> </ beans>使用contex命名空间<context:property-placeholder locaion=" "/>使用${}读取加载的属性值 不加载系统属性<context:property-placeholder location="" system-properties-mode="NEVER"/>加载多个properties文件<context:property-placeholder location="jdbc.propert…