Spring之纯注解配置(五)

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Spring之纯注解配置(五),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Spring纯注解配置的作用

完全脱离spring.xml配置文件,基于注解实现spring.xml配置的相同功能

一、@Configuration

作用:
	指定当前类是一个配置类,创建容器时会从该类上加载注解。

注意:
	1.获取容器时需要使用AnnotationApplicationContext(有@Configuration 注解类.class)。
	2.当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。

属性:
	value:用于指定配置类的字节码

spring 的配置类,相当于 bean.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

</beans>
@Configuration
public class SpringConfiguration {

}

二、@ComponentScan

作用:
	用于指定 spring 在初始化容器时要扫描的包。
	和在 spring 的 xml 配置文件中的:<context:component-scan base-package="*"/>是相同的。

属性:
	basePackages:用于指定要扫描的包。
	value:用于指定要扫描的包。

@ComponentScan相当于配置创建容器时要扫描的包

<context:component-scan base-package="cn.ybzy"></context:component-scan>
@Configuration
@ComponentScan("cn.ybzy")
public class SpringConfiguration {

}

三、@Bean

作用:
	该注解只能写在方法上,把当前方法的返回值作为bean对象存入spring的ioc容器中
属性:
	name:用于指定bean的id。不写时,默认值是当前方法的名称

@Bean相当于创建对象放入spring容器

    <!--配置QueryRunner-->
    <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
        <!--注入数据源-->
        <constructor-arg name="ds" ref="dataSource"></constructor-arg>
    </bean>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--配置数据库的信息-->
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo"></property>
        <property name="user" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
@Configuration
@ComponentScan("cn.ybzy")
public class SpringConfiguration {

   	@Bean(name="runner")
    @Scope("prototype")
    public QueryRunner createQueryRunner(DataSource dataSource){
        return new QueryRunner(dataSource);
    }

    @Bean(name="dataSource")
    public DataSource createDataSource(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverClass("com.mysql.jdbc.Driver");
            ds.setJdbcUrl("jdbc:mysql://localhost:3306/demo");
            ds.setUser("root");
            ds.setPassword("123456");
            return ds;
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }
}

四、@PropertySource

作用:
	用于加载.properties 文件中的配置。

属性:
	value[]:用于指定 properties 文件位置。如果是在类路径下,需要写上 classpath:

@PropertySource相当于spring.xml中读取/引入配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置扫描的包 -->
    <context:component-scan base-package="cn.ybzy"></context:component-scan>
    <!--配置QueryRunner-->
    <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
        <!--注入数据源-->
        <constructor-arg name="ds" ref="dataSource"></constructor-arg>
    </bean>

方式一:
	 <!--引入读取配置文件-->
    <context:property-placeholder location="classpath:jdbcConfig.properties"/>

方式二:    
 <!--   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbcConfig.properties</value>
                <value>classpath:redisConfig.properties</value>
            </list>
        </property>
    </bean>-->
    
    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!--配置数据库的信息-->
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

    </bean>
</beans>

@Configuration
@PropertySource("classpath:jdbcConfig.properties")
@ComponentScan("cn.ybzy")
public class SpringConfiguration {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;
}

  @Bean(name="runner")
    @Scope("prototype")
    public QueryRunner createQueryRunner(@Qualifier("dataSource1") DataSource dataSource){
        return new QueryRunner(dataSource);
    }

 
    @Bean(name="dataSource1")
    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);
        }
    }

五、@Import

作用:
	用于导入其他的配置类,在引入其他配置类时,可以不用写@Configuration 注解。

属性:
	value[]:用于指定其他配置类的字节码。使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类

@Import相当于引入其他配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <import resource="spring-dao.xml"></import>
            
</beans>

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;

 
    @Bean(name="runner")
    @Scope("prototype")
    public QueryRunner createQueryRunner(@Qualifier("dataSource1") DataSource dataSource){
        return new QueryRunner(dataSource);
    }

 
    @Bean(name="dataSource1")
    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);
        }
    }
    
}


@Configuration
@PropertySource("classpath:jdbcConfig.properties")
@Import(JdbcConfig.class)
@ComponentScan("cn.ybzy")
public class SpringConfiguration {

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137134.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!