Spring自定义bean注入到上下文

package com.zxw.spring.bean.自定义bean;

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @author Xuewei.Zhang
 * @date 2023/7/23
 */
public class CustomBeanDemo {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();

        BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(User.class);
        beanDefinitionBuilder.addPropertyValue("name", "張峻霖");
        beanDefinitionBuilder.addPropertyValue("age", 18);

        // 自定义Bean注入上下文方式1
        applicationContext.registerBeanDefinition("ZJL", beanDefinitionBuilder.getBeanDefinition());
        // 自定义Bean注入上下文方式2
        BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinitionBuilder.getBeanDefinition(),applicationContext);

        // 启动上下文
        applicationContext.refresh();
        System.out.println(applicationContext.getBeansOfType(User.class));
        // 关闭上下文
        applicationContext.close();
    }
}

输出结果

"C:\Program Files\Java\jdk1.8.0_181\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:6416,suspend=y,server=n -javaagent:E:\idea\idea2020chengxu\ideaHuanCun\.IntelliJIdea\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar;E:\a-program\util-cloud\target\classes;E:\MavenJar\org\springframework\boot\spring-boot-starter-web\2.7.9\spring-boot-starter-web-2.7.9.jar;E:\MavenJar\org\springframework\boot\spring-boot-starter\2.7.9\spring-boot-starter-2.7.9.jar;E:\MavenJar\org\springframework\boot\spring-boot\2.7.9\spring-boot-2.7.9.jar;E:\MavenJar\org\springframework\boot\spring-boot-autoconfigure\2.7.9\spring-boot-autoconfigure-2.7.9.jar;E:\MavenJar\org\springframework\boot\spring-boot-starter-logging\2.7.9\spring-boot-starter-logging-2.7.9.jar;E:\MavenJar\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;E:\MavenJar\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;E:\MavenJar\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;E:\MavenJar\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;E:\MavenJar\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;E:\MavenJar\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\MavenJar\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;E:\MavenJar\org\springframework\boot\spring-boot-starter-json\2.7.9\spring-boot-starter-json-2.7.9.jar;E:\MavenJar\com\fasterxml\jackson\core\jackson-databind\2.13.5\jackson-databind-2.13.5.jar;E:\MavenJar\com\fasterxml\jackson\core\jackson-annotations\2.13.5\jackson-annotations-2.13.5.jar;E:\MavenJar\com\fasterxml\jackson\core\jackson-core\2.13.5\jackson-core-2.13.5.jar;E:\MavenJar\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.5\jackson-datatype-jdk8-2.13.5.jar;E:\MavenJar\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.5\jackson-datatype-jsr310-2.13.5.jar;E:\MavenJar\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.5\jackson-module-parameter-names-2.13.5.jar;E:\MavenJar\org\springframework\boot\spring-boot-starter-tomcat\2.7.9\spring-boot-starter-tomcat-2.7.9.jar;E:\MavenJar\org\apache\tomcat\embed\tomcat-embed-core\9.0.71\tomcat-embed-core-9.0.71.jar;E:\MavenJar\org\apache\tomcat\embed\tomcat-embed-el\9.0.71\tomcat-embed-el-9.0.71.jar;E:\MavenJar\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.71\tomcat-embed-websocket-9.0.71.jar;E:\MavenJar\org\springframework\spring-web\5.3.25\spring-web-5.3.25.jar;E:\MavenJar\org\springframework\spring-beans\5.3.25\spring-beans-5.3.25.jar;E:\MavenJar\org\springframework\spring-webmvc\5.3.25\spring-webmvc-5.3.25.jar;E:\MavenJar\org\springframework\spring-aop\5.3.25\spring-aop-5.3.25.jar;E:\MavenJar\org\springframework\spring-context\5.3.25\spring-context-5.3.25.jar;E:\MavenJar\org\springframework\spring-expression\5.3.25\spring-expression-5.3.25.jar;E:\MavenJar\mysql\mysql-connector-java\8.0.25\mysql-connector-java-8.0.25.jar;E:\MavenJar\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar;E:\MavenJar\org\projectlombok\lombok\1.18.26\lombok-1.18.26.jar;E:\MavenJar\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;E:\MavenJar\org\springframework\spring-core\5.3.25\spring-core-5.3.25.jar;E:\MavenJar\org\springframework\spring-jcl\5.3.25\spring-jcl-5.3.25.jar;E:\MavenJar\org\jsoup\jsoup\1.13.1\jsoup-1.13.1.jar;E:\MavenJar\org\apache\poi\poi\3.10-beta2\poi-3.10-beta2.jar;E:\MavenJar\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;E:\MavenJar\org\apache\poi\poi-ooxml\3.10-beta2\poi-ooxml-3.10-beta2.jar;E:\MavenJar\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;E:\MavenJar\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;E:\MavenJar\org\apache\poi\poi-ooxml-schemas\3.10-beta2\poi-ooxml-schemas-3.10-beta2.jar;E:\MavenJar\org\apache\xmlbeans\xmlbeans\2.3.0\xmlbeans-2.3.0.jar;E:\MavenJar\stax\stax-api\1.0.1\stax-api-1.0.1.jar;E:\MavenJar\org\apache\poi\poi-scratchpad\3.0.2-FINAL\poi-scratchpad-3.0.2-FINAL.jar;E:\MavenJar\commons-logging\commons-logging\1.1\commons-logging-1.1.jar;E:\MavenJar\log4j\log4j\1.2.13\log4j-1.2.13.jar;E:\MavenJar\cn\hutool\hutool-all\5.8.15\hutool-all-5.8.15.jar;E:\MavenJar\cglib\cglib\3.2.5\cglib-3.2.5.jar;E:\MavenJar\org\ow2\asm\asm\6.0_ALPHA\asm-6.0_ALPHA.jar;E:\MavenJar\org\apache\ant\ant\1.9.6\ant-1.9.6.jar;E:\MavenJar\org\apache\ant\ant-launcher\1.9.6\ant-launcher-1.9.6.jar;E:\MavenJar\commons-io\commons-io\2.6\commons-io-2.6.jar;E:\idea\idea2020chengxu\IntelliJ IDEA 2020.1.2\lib\idea_rt.jar" com.zxw.spring.bean.自定义bean.CustomBeanDemo
Connected to the target VM, address: '127.0.0.1:6416', transport: 'socket'
21:39:59.904 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@711f39f9
21:39:59.938 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'
21:40:00.015 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor'
21:40:00.019 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory'
21:40:00.021 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor'
21:40:00.025 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor'
21:40:00.040 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'ZJL'
21:40:00.143 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'com.zxw.spring.bean.自定义bean.User#0'
{ZJL=User(name=張峻霖, age=18), com.zxw.spring.bean.自定义bean.User#0=User(name=張峻霖, age=18)}
21:40:00.178 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@711f39f9, started on Wed Jul 26 21:39:59 GMT+08:00 2023
Disconnected from the target VM, address: '127.0.0.1:6416', transport: 'socket'

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值