SpringBoot项目中的Configuration的作用

123 阅读1分钟

@Configuration注解表示一个类是Spring上下文中的配置类,它只需要在类级别上打上@Configuration注解就可以了。它常用于定义一些Bean,这些Bean可以用于整个应用程序。

在@Configuration类中,可以通过@Bean注解来定义一个Bean。@Bean注解通常用于配置一些需要初始化的对象,这些对象可以被其他组件引用。例如,一个数据库连接对象可以被其他的服务类或控制器引用。

下面是一个简单的MySQL连接配置的示例代码:

@Configuration
public class DatabaseConfig {

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

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

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

    @Bean
    public DataSource getDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(getDataSource());
        return jdbcTemplate;
    }
}

上面的代码中,@Value注解用于从配置文件中获取数据库连接的参数值。@Bean注解用于定义数据库连接池的Bean对象。两个@Bean方法中,第一个方法是获取DataSource,第二个方法是获取JdbcTemplate对象,JdbcTemplate是Spring JDBC提供的操作数据库的工具类。通过这样的配置,我们就可以在其他的类中使用JdbcTemplate对象来进行数据库操作了。

当我们在原生态的Spring项目中,用 xml文件配置时,如下:

applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd">

    <!--定义数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="${database.url}"/>
        <property name="username" value="${database.username}"/>
        <property name="password" value="${database.password}"/>
    </bean>

    <!--定义JdbcTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource"/>
    </bean>

    <!--属性文件占位符-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:database.properties</value>
            </list>
        </property>
    </bean>

</beans>