使用Spring的IOC案例(纯注解配置)

使用Spring的IOC案例基于XML
在XML配置中待改造的问题:
<context:component-scan base-package=“com.cn”/>扫描包
数据源以及QueryRunner的配置都需要进行配置,离不开bean.xml配置文件

解决:
添加配置类:
SpringConfiguration.java

//spring的配置类,相当于bean.xml文件
@Configuration
@ComponentScan("com.cn")
@Import({
    
    JdbcConfig.class})
public class SpringConfiguration {
    
    
    /**
     * @Configuration:
     * 用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。
     * 获取容器时需要使用AnnotationApplicationContext(有@Configuration注解的类.class)。
     *
     * @ComponentScan:
     * 已经把配置文件用类来代替了,创建容器时要扫描的包需要用:@ComponentScan
     * 用于指定spring在初始化容器时要扫描的包。
     * 作用和在spring的xml配置文件中的:
     * <context:component-scan base-package="com.cn"/>是一样的。
     *
     * @Bean:
     * 从配置文件中移除数据源和QueryRunner对象:
     * 该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。
     * name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
     *
     * 有了两个配置类SpringConfiguration和JdbcConfig,但是他们还没有关系。所以建立他们的关系:
     * @Import:
     * 用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解。当然,写上也没问题。
     * value[]:用于指定其他配置类的字节码。
     **/
}

JdbcConfig.java

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
    
    
    /**
     * @Bean:
     *    从配置文件中移除数据源和QueryRunner对象:
     *    该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。
     *    name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
     *
     * @PropertySource:
     * 用于加载.properties文件中的配置。
     * 例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。
     * value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:
     * **/
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    //创建一个数据源,并存入spring容器中
    @Bean(name="dataSource")
    public DataSource createDataSource() {
    
    
        try {
    
    
            ComboPooledDataSource ds = new ComboPooledDataSource();
//            ds.setUser("root");
//            ds.setPassword("1234");
//            ds.setDriverClass("com.mysql.jdbc.Driver");
//            ds.setJdbcUrl("jdbc:mysql:///spring_day02");
            ds.setDriverClass(driver);
            ds.setJdbcUrl(url);
            ds.setUser(username);
            ds.setPassword(password);
            return ds;
        } catch (Exception e) {
    
    
            throw new RuntimeException(e);
        }
    }
    //创建一个QueryRunner,并且也存入spring容器中
    @Bean(name="queryRunner")
    public QueryRunner createQueryRunner(DataSource dataSource) {
    
    
        return new QueryRunner(dataSource);
    }
}

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ideawork?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root

基于XML案例中删除bean.xml配置文件,由于没有配置文件了,获取容器通过:

private ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);

猜你喜欢

转载自blog.csdn.net/friendA3103/article/details/104989108