Spring IoC 配置类 总结

1. 简介

Spring中可以使用配置类完全代替xml来配置IoC容器。

2. 代码

以下代码实现了定义配置并引用外部类,并从外部文件赋值。

java 复制代码
@ComponentScan("com.jojo.ioc")//确定扫描范围
@PropertySource(value = "classpath:jdbc.properties")//指定外部文件
@Configuration//指定该类为配置类
public class JavaConfiguration {

    @Value("${url}") //从外部文件中获取值
    private String url;

    @Value("${driver}")//从外部文件中获取值
    private String driver;

    @Value("${username}")//从外部文件中获取值
    private String username;

    @Value("${password}")//从外部文件中获取值
    private String password;
    
    @Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON)//定义单例模式
    @Bean(name = "name",initMethod = "", destoryMethod ="") //引用外部类并设置bean name,初始化方法,和销毁方法
    public DruidDataSource dataSource(){
        //实现具体的实例化过程
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);//设置外部类的值
        dataSource.setDriverClassName(driver);//设置外部类的值
        dataSource.setUsername(username);//设置外部类的值
        dataSource.setPassword(password);//设置外部类的值
        return dataSource;//返回
    }
    
    //外部类引用外部类试例
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource/* 参数直接声明要引用的类 */){
        JdbcTemplate jdbcTemplate = new JdbcTemplate();

        //方法1.如果dataSource也为自定义bean类方法,直接调用dataSource()
        jdbcTemplate.setDataSource(dataSource());

        //方法2.形参列表声明想要的组件类型
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }
}

3.导入其他配置类

可以在配置类中引用其他配置类:

java 复制代码
@Import(value = {JavaConfiguration2.class})//导入JavaConfiguration2配置类
@Configuration
public class JavaConfiguration1 {
}
相关推荐
JustHappy35 分钟前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本42 分钟前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
在繁华处1 小时前
Java从零到熟练(三):流程控制
java·开发语言·python
唐青枫1 小时前
Java Optional 实战指南:优雅处理空值与链式转换
java
一起学开源1 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发
逍遥德2 小时前
MQTT教程详解-04.SpringBoot集成MQTT(告别手动控制)
java·spring boot·物联网·中间件·iot·iotdb
语戚2 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
我命由我123453 小时前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime
888CC++3 小时前
java 并发编程
java·开发语言·python
无风听海4 小时前
JSON Web Token(JWT)完全指南
java·前端·json