8 façons de définir les beans dans SpringBoot
1. @Haricot
@Bean
publicZlmService zlmService(){
return new ZlmService();
}
2. @Composant
@Component
public class ZlmService{
}
3. @Controller @RestController @Service @Repository
@Controller
public class ZlmController{
}
4. @ControllerAdvice @RestControllerAdvice
@ControllerAdvice
public class ZlmControllerAdvice implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter returnType, Class converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
System.out.println("body write");
return body;
}
}
Les résultats retournés peuvent être traités
5. @Configuration
bean de classe de configuration
@Configuration
public class AppConfig{
}
6. @Importer
public class ZlmService {
public String info(String info){
System.out.println("service中info () execute");
return info;
}
}
@Import(ZlmService.class)
@SpringBootApplication
public class Application {
}
7. BeanDefinition
public class ZlmImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
/**
* 注册bean到spring容器中
* @param importingClassMetadata
* @param registry
* @param importBeanNameGenerator
*/
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(ZlmService.class);
registry.registerBeanDefinition("zlmService",beanDefinition);
}
}
@Import(ZlmImportBeanDefinitionRegistrar.class)
@SpringBootApplication
public class Application {
}
8. XML
@ImportResource("classpath:spring.xml")
@SpringBootApplication
public class Application {
}
<bean id="zlmService" class="com.zlm.ZlmService"/>