Spring一般都是写xml配置文件,其实也并不一定需要配置文件,使用注解可去除配置文件实现注解配置,简单的复习回顾一下
我们首先定义一个类,名为SpringConfiguration,里面什么都不用写
public class SpringConfiguration {
}
然后我们来认识几个Spring的注解
@Configuration注解
指定当前类是一个配置类,当配置类作为AnootationConfigApplicationContext对象创建的参数时,可以不写
@ComponentScan注解
用于通过注解指定Spring在创建容器时要扫描的包,和basePackeage作用一样,等同于配置文件中配置了<context:conponent-scan base-package=""/>
@Bean
把当前方法的返回值作为bean存入IOC容器中,其name属性代表bean的id,不写默认值是当前方法的名称,和Autowired注解的作用一样
@PropertySource
用于指定properties配置文件的位置,其属性value指定文件的名称和路径,关键字:classpath表示类路径下
@ComponentScan({"com.xxx","config"})
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {
}
jdbcConfig类中是数据库相关配置类,用于取代Spring原xml配置文件中配置的数据库相关内容
其中 @Scope("prototype")代表多例。
@Value注解用于将我们的jdbcConfig.properties配置文件的值读取出来
@Qualifier注解用于当我们有两个dataSource对象,该注解可指定我们具体使用的是哪个。
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
//用于创建一个QueryRunner对象
@Bean(name = "runner")
@Scope("prototype")
public QueryRunner createQueryRunner(@Qualifier("ds2") DataSource dataSource){
return new QueryRunner(dataSource);
}
//创建数据源对象
@Bean(name = "ds2")
public DataSource createDataSource() {
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Bean(name = "ds1")
public DataSource createDataSource1() {
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
我的jdbcConfig.properties配置文件内容如下:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3307/xxxx jdbc.username=root jdbc.password=root