@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>