中国企业500强名单公布优化网站被百度屏

张小明 2026/1/16 9:25:36
中国企业500强名单公布,优化网站被百度屏,医院网站建设的规划方案,谁做广东11彩票网站深入了解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进行投诉反馈,一经查实,立即删除!

沈阳网站推广成都网站建设:

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个摄影作品水印处理演示页面。功能包括:1) 上传图片展示水印问题 2) 演示水印去除前后对比 3) 提供不同强度调节选项 4) 展示处理后的高清效果。使用React前端Nod…

张小明 2026/1/15 22:15:28 网站建设

做电影网站有什么流媒体好织梦网站采集如何做

FaceFusion与HuggingFace镜像同步策略:确保模型加载稳定性 在AI视觉应用日益普及的今天,人脸替换技术已从实验室走向影视、直播、社交等真实场景。FaceFusion作为开源社区中高保真度的人脸交换工具,凭借其对ONNX模型的良好支持和高效的推理性…

张小明 2026/1/16 0:09:34 网站建设

安徽做公司网站哪家好旅游集团网站建设

ESP-CSI无线感知技术:从基础原理到实际应用完全指南 【免费下载链接】esp-csi Applications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection 项目地址: https://gitcode.com/gh_mirrors/es/esp-csi 无线感知…

张小明 2026/1/15 8:00:34 网站建设

网站搭建计划书白云区网站建设公司

protected override void WndProc(ref Message m) {switch (m.Msg){case 0x0201://鼠标左键按下的消息m.Msg 0x00A1;//更改消息为非客户区按下鼠标m.LParam IntPtr.Zero;//默认值m.WParam new IntPtr(2);//鼠标放在标题栏内break;}base.WndProc(ref m); }直接放在form类中就…

张小明 2026/1/15 8:02:51 网站建设

电商网站开发主要的三个软件网站改标题不改版 k

AI小说生成器完整指南:从零开始创作长篇小说的终极教程 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator 🚀 你是否曾经梦…

张小明 2026/1/15 7:58:48 网站建设