java的配置类 取代xml配置文件

发布时间 2023-09-13 18:30:33作者: 微风抚秀发

配置类以及对 注解@Value的使用

// TODO:创建 java的配置类 取代xml配置文件
@Configuration  //配置类注解
@ComponentScan({"com.wind.dao", "com.wind.service"}) // 包扫描注解配置 可存入多个包
@PropertySource(value = "classpath:jdbc.properties")        //引用外部文件 注解   value可省略
public class JavaConfiguration {
    /*
    情况1: ${key} 取外部配置key对应的值
    情况2: ${key:defaultValue} 没有key,可以给与默认值 @Value("${wind.username:hahaha}") */
    @Value("${wind.url}") //设置默认值
    private String url;
    @Value("${wind.drive}")
    private String drive;
    @Value("${wind.username}")
    private String username;
    @Value("${wind.password}")
    private String password;

    @Bean  // TODO:将配置类的方法创建的组件存储到ioc容器  ( <bean> --> 一个方法 )
    //方法的返回值类型:bean组件的类型 或他的父类 或接口
    //方法名字: bean id
    public DruidDataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(drive);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
点我查看结果
public class ReplaceXml {
    @Test
    public void test() {
        //方式1:创建ioc容器
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(JavaConfiguration.class);
        //方式2:创建ioc容器
        AnnotationConfigApplicationContext annotationConfigApplicationContext =
                new AnnotationConfigApplicationContext();
        annotationConfigApplicationContext.register(JavaConfiguration.class);
        annotationConfigApplicationContext.refresh();
//        获取组件
        UserService bean = applicationContext.getBean(UserService.class);
        System.out.println(bean);
    }
}