配置类以及对 注解@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);
}
}