标签:nconf tree 获取 作用 spring ann 初始化 位置 pac
在上一篇博客中实现了xml+注解的ioc使用,我们发现,之所以离不开xml配置文件的原因是在该文件中有一句很关键的话,告知spring在创建容器时要扫描的包,依据扫描到的注解创建对象并放入容器中。
<!-- 开启注解扫描,告知spring在创建容器时要扫描的包 -->
    <context:component-scan base-package="com.lyy.service">
    </context:component-scan>
并且如果要使用第三方提供的类的对象,我们也只能在配置文件中配置该bean,如数据库连接池的对象
<!-- 配置连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
如果可以把这两部分也通过注解来完成,就可以不使用xml配置文件。
作用:
用于指定当前类是一个 spring 配置类, 当创建容器时会从该类上加载注解。 获取容器时需要使用 AnnotationApplicationContext(有@Configuration 注解的类.class)。
属性:
value,用于指定配置类的字节码文件
作用:
用于指定 spring 在初始化容器时要扫描的包。和配置文件中的context:component-scan标签作用一样
属性:
basePackages:用于指定要扫描的包。和该注解中的 value 属性作用一样
作用:
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器
属性:
name,给创建的对象指定一个名称(即 bean 的 id)
作用:
用于加载.properties 文件中的配置
属性:
value[],用于指定 properties 文件位置。如果是在类路径下,需要写上 classpath:
用于在一个配置类上导入另一个配置类,导入后就可以在当前配置类上使用导入此配置类中的内容
属性:value,指定其他配置类的字节码
ApplicationContext ac =
new AnnotationConfigApplicationContext(SpringConfiguration.class);
工程的整体结构和使用注解+xml配置时一样,
两个配置类
JdbcConfiguration
/**
 * 数据库连接配置类
 */
@Configuration
@PropertySource(value = "classpath:db.properties")
public class JdbcConfiguration {
    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    /**
     * 创建dataSource的bean
     *
     * @return
     */
    @Bean(name = "dataSource")
    public DataSource createDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
SpringConfiguration
@Configuration
@ComponentScan(basePackages = "com.lyy")
@Import(value = JdbcConfiguration.class)
public class SpringConfiguration {
    /**
     * 创建 common-dbutils的核心对象
     * @return
     */
    @Bean(name="queryRunner")
    public QueryRunner createQueryRunner(@Qualifier("dataSource") DataSource dataSource){
        return new QueryRunner(dataSource);
    }
}
最后在获取spring容器时要使用AnnotationConfigApplicationContext
示例工程地址
示例工程地址
标签:nconf tree 获取 作用 spring ann 初始化 位置 pac
原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/12159096.html