中国建设银行招聘信息网站电销系统哪个好

张小明 2026/1/15 17:54:57
中国建设银行招聘信息网站,电销系统哪个好,英语做美食网站,wordpress主题国内模板深入了解Spring Core的核心原理、核心组件、实际使用方式以及底层逻辑#xff0c;搞清楚它作为整个Spring生态基石的具体实现和价值。 Spring Core是Spring框架的根模块#xff0c;也是所有Spring扩展框架#xff08;如Spring Boot、Spring MVC#xff09;的底层基础。它的…深入了解Spring Core的核心原理、核心组件、实际使用方式以及底层逻辑搞清楚它作为整个Spring生态基石的具体实现和价值。Spring Core是Spring框架的根模块也是所有Spring扩展框架如Spring Boot、Spring MVC的底层基础。它的核心使命是通过控制反转IoC和依赖注入DI实现对象的解耦管理彻底改变传统Java开发中对象创建和依赖管理的方式。下面我会从「核心思想」→「核心组件」→「实际使用」→「底层流程」逐层拆解结合代码示例让你彻底理解。一、Spring Core的核心思想IoC DI这是Spring Core的灵魂先把这两个概念讲透后续所有内容都围绕它们展开。1. 控制反转IoCInversion of Control概念解释传统Java开发中程序员掌控对象的生命周期// 传统方式手动new对象控制创建和依赖publicclassUserService{// 手动创建依赖的UserDao对象privateUserDaouserDaonewUserDaoImpl();publicvoidgetUser(){userDao.queryUser();}}这种方式的问题对象耦合度极高——如果UserDaoImpl的构造方式变了比如需要传参数所有new它的地方都要改如果要替换UserDao的实现类比如UserDaoMysqlImpl也要逐个修改。IoC的核心是反转控制权把对象的「创建、初始化、依赖注入、销毁」全部交给Spring IoC容器管理程序员只需要「定义对象」和「声明依赖」无需手动new对象。通俗比喻传统方式你程序员亲自买菜、切菜、炒菜手动创建所有对象IoC方式你告诉餐厅Spring容器要吃什么菜声明需要的对象餐厅帮你准备好所有食材和餐具创建对象注入依赖你只需要吃使用对象就行。2. 依赖注入DIDependency Injection概念解释DI是IoC的具体实现方式当Spring容器创建一个对象比如UserService时会自动将它依赖的其他对象比如UserDao“注入”到这个对象中无需程序员手动设置。DI解决的核心问题对象之间的依赖解耦——UserService不再关心UserDao是怎么创建的只关心怎么使用它。二、Spring Core的核心组件Spring Core的核心是「IoC容器」所有功能都围绕容器展开核心组件如下1. BeanSpring容器的管理单元定义所有被Spring IoC容器管理的Java对象都叫Bean本质就是普通的POJO比如UserService、UserDao区别普通Java对象是new出来的Bean是由Spring容器创建、管理、销毁的标识通过注解Component/Service/Repository/Controller或XML配置告诉Spring“这个类要被当作Bean管理”。2. BeanFactoryIoC容器的根接口定位定义了IoC容器的最基础规范比如获取Bean、判断Bean是否存在、获取Bean类型等核心方法getBean(String beanName)根据名称获取Bean、getBean(ClassT requiredType)根据类型获取Bean特点轻量级只实现了最核心的IoC功能延迟初始化只有调用getBean()时才创建Bean实例节省内存但启动快实际开发中几乎不直接使用功能太简单。3. ApplicationContextBeanFactory的增强版实际开发首选定位BeanFactory的子接口是Spring最常用的IoC容器扩展功能相比BeanFactory立即初始化容器启动时就创建所有单例Bean启动慢但运行时响应快支持国际化、资源加载读取配置文件、事件发布/监听整合Spring AOP、事务管理等常见实现类开发中常用实现类适用场景AnnotationConfigApplicationContext基于注解配置类的容器主流ClassPathXmlApplicationContext基于XML配置文件的容器老旧项目WebApplicationContextWeb环境下的容器如Spring MVC4. BeanDefinitionBean的“定义说明书”定位Spring容器内部用来描述Bean的元数据相当于Bean的“身份证”包含信息Bean的类型、作用域、依赖对象、初始化/销毁方法等底层逻辑Spring启动时会先扫描所有Bean的定义注解/XML转换成BeanDefinition再根据BeanDefinition创建Bean实例。三、Spring Core的实际使用代码示例下面通过完整的代码示例演示Spring Core的核心用法基于注解主流方式。前置条件新建Maven项目引入Spring Core依赖如果用Spring Boot只需引入spring-boot-starter!-- 纯Spring Core依赖 --dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.1.2/version!-- 推荐使用稳定版 --/dependency/dependencies步骤1定义Bean声明需要被容器管理的对象// 1. 数据访问层BeanRepository是Component的衍生注解语义更明确RepositorypublicclassUserDao{publicvoidqueryUser(){System.out.println(查询用户信息);}}// 2. 业务层BeanService同理ServicepublicclassUserService{// 声明依赖需要UserDao对象privatefinalUserDaouserDao;// 推荐构造器注入Spring 4.3支持自动注入无需AutowiredpublicUserService(UserDaouserDao){this.userDaouserDao;}publicvoidgetUserInfo(){// 直接使用注入的UserDao无需newuserDao.queryUser();}}步骤2配置IoC容器告诉Spring扫描哪些包// 配置类Configuration标识这是Spring的配置类Configuration// 组件扫描告诉Spring扫描com.example包下的所有注解Service/Repository等ComponentScan(com.example)publicclassSpringConfig{// 无需额外代码扫描后Spring会自动创建Bean}步骤3启动容器并使用BeanpublicclassSpringCoreDemo{publicstaticvoidmain(String[]args){// 1. 创建ApplicationContext容器基于注解配置ApplicationContextcontextnewAnnotationConfigApplicationContext(SpringConfig.class);// 2. 从容器中获取UserService Bean两种方式// 方式1根据类型获取推荐UserServiceuserServicecontext.getBean(UserService.class);// 方式2根据名称获取默认名称是类名首字母小写如userService// UserService userService (UserService) context.getBean(userService);// 3. 使用BeanuserService.getUserInfo();// 输出查询用户信息}}依赖注入的3种方式补充上面用了构造器注入推荐另外两种方式如下ServicepublicclassUserService{// 方式1字段注入简单但不推荐不利于单元测试// Autowired// private UserDao userDao;// 方式2Setter注入适合可选依赖// private UserDao userDao;// Autowired// public void setUserDao(UserDao userDao) {// this.userDao userDao;// }// 方式3构造器注入推荐强制依赖确保对象创建时依赖已初始化privatefinalUserDaouserDao;Autowired// Spring 4.3单构造器可省略publicUserService(UserDaouserDao){this.userDaouserDao;}}四、Spring Core的核心细节1. Bean的作用域ScopeSpring允许你指定Bean的创建策略核心作用域如下默认是singleton作用域说明singleton单例默认容器中只有1个Bean实例所有请求都返回同一个对象prototype原型每次调用getBean()或注入时都创建新的Bean实例requestWeb环境每个HTTP请求创建1个Bean实例请求结束后销毁sessionWeb环境每个HTTP会话创建1个Bean实例会话结束后销毁使用方式通过Scope注解指定ServiceScope(prototype)// 原型作用域每次获取都是新实例publicclassUserService{// ...}2. Bean的生命周期核心流程Spring容器创建Bean的完整流程是理解Spring Core的关键flowchart TD A[实例化Bean]--B[属性填充DI注入依赖]B --C[初始化前BeanPostProcessor前置处理]C --D[初始化调用PostConstruct/afterPropertiesSet]D --E[初始化后BeanPostProcessor后置处理]E --F[Bean就绪可被使用]F --G[容器关闭]G --H[销毁前调用PreDestroy/destroy]H --I[销毁Bean]代码示例生命周期回调ServicepublicclassUserServiceimplementsInitializingBean,DisposableBean{privatefinalUserDaouserDao;publicUserService(UserDaouserDao){this.userDaouserDao;System.out.println(1. 构造器执行创建UserService实例);}// 初始化回调1PostConstruct注解推荐PostConstructpublicvoidinit(){System.out.println(4. PostConstruct初始化操作);}// 初始化回调2实现InitializingBean接口备选OverridepublicvoidafterPropertiesSet()throwsException{System.out.println(4. afterPropertiesSet初始化操作);}// 销毁回调1PreDestroy注解推荐PreDestroypublicvoidpreDestroy(){System.out.println(8. PreDestroy销毁前操作);}// 销毁回调2实现DisposableBean接口备选Overridepublicvoiddestroy()throwsException{System.out.println(8. destroy销毁前操作);}}3. 自定义BeanBean注解对于第三方类比如Druid数据源、RedisTemplate无法加Component注解可通过Bean手动注册BeanConfigurationpublicclassSpringConfig{// 注册第三方类为BeanBean// 方法名默认是Bean名称也可指定Bean(dataSource)publicDruidDataSourcedataSource(){DruidDataSourcedsnewDruidDataSource();ds.setUrl(jdbc:mysql://localhost:3306/test);ds.setUsername(root);ds.setPassword(123456);returnds;}}总结核心思想Spring Core的核心是IoC反转对象控制权和DI自动注入依赖彻底解耦对象创建和依赖管理核心容器ApplicationContext是实际开发的首选IoC容器增强版BeanFactory负责Bean的创建、注入、销毁核心用法通过Component/Service等注解声明Bean构造器注入实现依赖解耦ConfigurationBean管理第三方类关键细节Bean的作用域默认单例、生命周期初始化/销毁回调是理解Spring Core底层的核心。Spring Core的这些特性是所有Spring扩展框架的基础——比如Spring Boot的自动配置、Spring MVC的Controller管理本质都是基于Spring Core的IoC容器实现的。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

tomcat网站开发wordpress中文版广告

从零构建工业级 ModbusTCP 从机:STM32 上的帧解析与实战实现 在现代工业控制系统中,设备之间的“对话”方式早已不再局限于传统的 RS-485 总线。随着工厂智能化、网络化的推进,越来越多的嵌入式节点需要接入局域网甚至云端平台。而在这其中&…

张小明 2026/1/15 17:52:37 网站建设

dede制作的网站挂马辽宁建设执业继续教育协会网站

LangFlow公益项目支持计划:为NGO提供免费算力 在人工智能技术飞速发展的今天,大语言模型(LLMs)早已不再是实验室里的稀有物件。从智能客服到内容生成,从教育辅助到医疗咨询,AI 正以前所未有的速度渗透进社会…

张小明 2026/1/15 17:24:05 网站建设

网站备案到公司佛山市品牌网站建设公司

摘要 随着全球贸易的不断发展和生鲜食品需求的增长,冷链物流在保障食品安全、延长产品保质期方面发挥着至关重要的作用。传统的冷链物流系统存在信息不透明、运输效率低、温控精度不足等问题,难以满足现代物流的高效化和智能化需求。特别是在生鲜农产品、…

张小明 2026/1/14 22:13:41 网站建设

怎么做网站服务器吗做动漫主题的网站

Linly-Talker 支持多摄像头视角切换输出 在虚拟主播直播越来越依赖视觉表现力的今天,一个简单的静态画面已经难以满足观众对内容节奏和信息密度的需求。想象一下:当数字人讲解到关键知识点时,镜头自动推近为特写;情绪激昂时切换为…

张小明 2026/1/14 16:02:28 网站建设

建站主机 wordpress自己做网站外包

PyTorch损失函数详解:选择合适的Loss提升模型精度 在深度学习的实际项目中,我们常常会遇到这样的情况:模型结构设计得再精巧,训练数据再充足,但如果损失函数选错了,最终结果可能依然惨不忍睹——分类任务把…

张小明 2026/1/15 15:59:29 网站建设

做有网被视频网站有哪些wordpress创建主题

DataV数据可视化:5分钟从零打造惊艳企业大屏 【免费下载链接】DataV 项目地址: https://gitcode.com/gh_mirrors/dat/DataV 还在为复杂的数据展示头疼吗?DataV作为一款强大的Vue数据可视化组件库,让你无需编写繁琐代码,快…

张小明 2026/1/15 5:08:07 网站建设