首页 > 其他分享 >spring 必知必会

spring 必知必会

时间:2024-09-08 16:13:44浏览次数:4  
标签:必知 spring 必会 bean FactoryBean dataSource Spring new

beanfactory 和 factorybean的区别

  • beanfactory 是spring的一个接口,主要是获取bean的方法。其实现类有保存bean的map容器,以及从容器中获取bean的方法。

  • 简单来说BeanFactory是对内用的,不面向开发者。FactoryBean是对外用的,面向开发者。BeanFactory是Spring实现IOC的顶层接口,FactoryBean是给开发者自定义bean的规范化接口,让开发者自己new的对象又想交给Spring管理,但是注意这个getObject方法new出来的bean不是真的由spring管理,而是套了一个马甲,Spring直接管理马甲来间接管理new出来的对象。说实话不用FactoryBean也可以让Spring管理。

在实际工作中,FactoryBean通常用于创建复杂对象或者对对象的创建过程进行定制化。以下是一个实际工作中的例子:

假设你正在开发一个企业级应用,其中有一个数据库连接池的管理模块。

首先,定义一个数据库连接池的工厂类实现FactoryBean接口:

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceFactoryBean implements FactoryBean<DataSource> {

    @Override
    public DataSource getObject() throws Exception {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://your-db-url");
        dataSource.setUser("username");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Override
    public Class<?> getObjectType() {
        return DataSource.class;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }
}

在 Spring 配置文件中,可以这样配置:

<bean id="dataSource" class="your.package.DataSourceFactoryBean"/>

这样,当 Spring 容器启动时,会调用DataSourceFactoryBeangetObject方法来创建数据库连接池对象,并将其注入到需要DataSource的地方。

标签:必知,spring,必会,bean,FactoryBean,dataSource,Spring,new
From: https://www.cnblogs.com/clarencezzh/p/18403042

相关文章

  • 万字长文带你窥探Spring中所有的扩展点
    写在前面Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。由spring提供的、在容器或be......
  • 八,SpringBoot Web 开发访问静态资源(附+详细源码剖析)
    八,SpringBootWeb开发访问静态资源(附+详细源码剖析)@目录八,SpringBootWeb开发访问静态资源(附+详细源码剖析)1.基本介绍2.快速入门2.1准备工作3.改变静态资源访问前缀,定义为我们自己想要的4.改变SpringBoot当中的默认的静态资源路径(实现自定义静态资源路径)5.静态资......
  • vulhub spring 远程命令执行漏洞(CVE-2016-4977)
    步骤一:执行以下命令启动靶场环境并在浏览器访问cd/vulhub/spring/CVE-2016-4977#进入漏洞环境所在目录docker-compose up-d#启动靶场 docker ps#查看容器信息步骤二:访问环境步骤三:192.168.0.107:8080/oauth/authorize?response_type=${2*2}&client_id=acme&scope=o......
  • SpringBoot集成knife4j接口文档
    0.导入maven依赖<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><arti......
  • 解决SpringBoot 接口恶意刷新和暴力请求!!
    在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻击的情况,下面的教程,通过intercept和redis针对url+ip在一定时间内访问的次数来将ip禁用,可以根据自己的需求进行相应的修改,来打打自己的目的;首先工程为springboot框架搭建,不再详细......
  • SpringBoot使用Redis
    0.导入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>1.配置ymlspring:data:redis:port:6379host:{redis.ip}......
  • Java大学生实战项目-基于SpringBoot+vue 的民宿在线预定平台
    博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w+、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • Java大学生实战项目- 基于SpringBoot+vue 的在线远程考试系统
    博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w+、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • SpringBoot学习(9)(springboot自动配置原理)(源码分析、面试题)
    目录一、引言二、为啥学习自动配置原理?三、自动配置(1)基本概述(2)学习回顾四、自动配置——源码分析(1)回顾学习(2)回到源码学习(1)注解@ComponentScan(2)注解@SpringBootConfiguration(3)核心注解@EnableAutoConfiguration(4)对刚刚源码的一个大致总结(梳理)五、解决问题六、分......
  • 【2025】基于springboot二手闲置物品置换平台(源码+文档+调试+答疑)
    ......