@Configuration和@Bean
1. 概述
@Configuration
注解標記在類上, 就像下面的配置文件. 我們將該類成為配置類.
<?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">
<bean id="userService" class="com.funtl.hello.spring.service.impl.UserServiceImpl" />
</beans>
@Bean
標記在方法上, 方法的返回值相當於向SpringIOC
容器注入一個Bean
. 其中, 返回值相當於xml
文件bean
標簽的class
屬性, 方法的名稱相當於id
屬性. 我們的property
屬性被放置在了方法之中進行實現. @Bean
注解有一個屬性, name
屬性 可以幫助我們指定Bean
的id
的名字 .
2. 實例
Spring Boot
實現后端Validator
驗證 .
<!-- 配置 Bean Validator 定義 -->
<bean id="validator" class="javax.validation.Validator"/>
<bean id="beanValidator" class="com.funtl.my.shop.commons.validator.BeanValidator">
<property name="validator" ref="validator" />
</bean>
改成配置類
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import pers.ycy.blog.utils.BeanValidator;
import javax.validation.Validator;
@Configuration
public class AutoWired {
private final Validator Validator;
public AutoWired(Validator Validator) {
this.Validator = Validator;
}
@Bean(name="beanValidator")
public BeanValidator getBeanValidator(){
return new BeanValidator(Validator);
}
}