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 {
}
相关推荐
tryxr1 分钟前
volatile 的作用
java·jvm·volatile·指令重排序
VX:Fegn08953 分钟前
计算机毕业设计|基于springboot + vue乡村振兴服务系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
独自归家的兔15 分钟前
Java Robot 详解:系统级鼠标 / 键盘模拟的核心原理与实战
java·开发语言
岳轩子22 分钟前
DDD领域驱动设计:核心概念、实践结构与框架对比
java·spring
何中应23 分钟前
Bean的三种注入方式
开发语言·spring boot·后端·spring
席万里31 分钟前
基于Flask框架实现的一个在线考试系统
后端·python·flask
ArabySide36 分钟前
【Java】重构之善用多态解耦,记录一次模板方法实践
java·重构·模板方法模式
wanghowie42 分钟前
01.03 Java基础篇|面向对象核心与设计实践
java·开发语言
vortex51 小时前
ORM是什么?如何理解ORM?ORM的优缺点?
java·数据库·sql·mysql·oracle·orm
Algebraaaaa1 小时前
为什么线程阻塞要用.join而不是.wait
java·c++·python