博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring @Configuration proxyBeanMethods
阅读量:4099 次
发布时间:2019-05-25

本文共 2749 字,大约阅读时间需要 9 分钟。

文章目录

前言

注解的意思是proxyBeanMethods配置类是用来指定@Bean注解标注的方法是否使用代理。

直接看下面列子简单明了

一、项目结构

在这里插入图片描述

二、Dog和Cat简单实体类

@Datapublic class Dog {
private String name; private Cat cat;}
@Datapublic class Cat {
}

三、启动类ProxybeanmethodtestApplication

简单创建的springboot工程

@SpringBootApplicationpublic class ProxybeanmethodtestApplication {
public static void main(String[] args) {
SpringApplication.run(ProxybeanmethodtestApplication.class, args); }}

四、pom文件如下

只使用了lombok依赖,其他都是springboot工程脚手架自带的

4.0.0
com.cch
demo
0.0.1-SNAPSHOT
com.cch
proxybeanmethodtest
0.0.1-SNAPSHOT
proxybeanmethodtest
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok

五、PetConfig

1.proxyBeanMethods 先使用默认true的方式

@Configuration(proxyBeanMethods = true)public class PetConfig {
@Bean public Dog dog() {
Dog dog = new Dog(); dog.setName("狗狗"); dog.setCat(cat()); return dog; } @Bean public Cat cat() {
System.out.println("cat调用~~~~喵喵******"); return new Cat(); }}

1.启动工程输出如下:

在这里插入图片描述

2.proxyBeanMethods 先使用默认false的方式

@Configuration(proxyBeanMethods = false)public class PetConfig {
@Bean public Dog dog() {
Dog dog = new Dog(); dog.setName("狗狗"); dog.setCat(cat()); return dog; } @Bean public Cat cat() {
System.out.println("cat调用~~~~喵喵******"); return new Cat(); }}

2.启动工程输出如下:

在这里插入图片描述

总结

proxyBeanMethods配置类是用来指定@Bean注解标注的方法是否使用代理。

1.当设置为true的时候,说明,当配置类中的某个bean需要配置类中其他的bean对象的时候,是去spring 容器拿的,所以被依赖的那个bean只会创建一次,如本篇文章中,当proxyBeanMethods设置为true时,cat对象只会创建一次,因为创建dog的时候,会去spring容器获取。
2.当设置为false的时候,说明当配置类中的某个bean需要配置类中其他bean对象的时候,是立即创建的,而不是去找spring容器获取。如本篇文章中,当proxyBeanMethods设置为false时,cat对象会创建两次,一次是cat交给spring管理的bean,一次是dog bean初始化的时候会去自己创建一个cat对象出来

转载地址:http://qkrii.baihongyu.com/

你可能感兴趣的文章
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
谈谈加密和混淆吧[转]
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Flutter Boost的router管理
查看>>
Vue2.0全家桶仿腾讯课堂(移动端)
查看>>
React+Redux系列教程
查看>>
19 个 JavaScript 常用的简写技术
查看>>
iOS开发支付集成之微信支付
查看>>
浅谈JavaScript--声明提升
查看>>
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>