spring动态修改bean
spring动态修改bean
@RequestMapping("ok")
    public Object test2(){
        ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
        String[] beans = applicationContext.getBeanDefinitionNames();
        for (String beanName : beans) {
            // 拿到bean的Class对象
            Class<?> beanType = applicationContext.getType(beanName);
            if (beanType == null) {
                continue;
            }
            // 拿到当前bean类型的所有字段
            Field[] declaredFields = beanType.getDeclaredFields();
            if(!beanName.contains("testService") ){
                continue;
            }
            for (Field field : declaredFields) {
                // 从spring容器中拿到这个具体的bean对象
                Object bean = applicationContext.getBean(beanName);
                // 当前字段设置新的值
                try {
                    setFieldData(field, bean, "ffffff");
                    System.out.println("finished");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return "ok";
    }
    private void setFieldData(Field field, Object bean, String data) throws Exception {
      // 注意这里要设置权限为true
        field.setAccessible(true);
        Class<?> type = field.getType();
        if (type.equals(String.class)) {
            field.set(bean, data);
        } else if (type.equals(Integer.class)) {
            field.set(bean, Integer.valueOf(data));
        } else if (type.equals(Long.class)) {
            field.set(bean, Long.valueOf(data));
        } else if (type.equals(Double.class)) {
            field.set(bean, Double.valueOf(data));
        } else if (type.equals(Short.class)) {
            field.set(bean, Short.valueOf(data));
        } else if (type.equals(Byte.class)) {
            field.set(bean, Byte.valueOf(data));
        } else if (type.equals(Boolean.class)) {
            field.set(bean, Boolean.valueOf(data));
        } else if (type.equals(Date.class)) {
            field.set(bean, new Date(Long.valueOf(data)));
        }
    }
参考
spring动态修改bean的更多相关文章
- Spring动态注册bean实现动态多数据源
		Spring动态注册bean实现动态多数据源 http://blog.csdn.net/littlechang/article/details/8071882 
- spring动态添加bean
		不知道大家想过没有,我们使用mybatis的时候只要写接口和配置上一个sql语句就可以了,单从代码的角度来看,这是不合理的. 所以我们通常在service里面注入的mapper它其实是一个代理对象  ... 
- 生产环境屏蔽swagger(动态组装bean)
		spring动态组装bean 背景介绍: 整合swagger时需要在生产环境中屏蔽掉swagger的地址,不能在生产环境使用 解决方案 使用动态profile在生产环境中不注入swagger的bean ... 
- Spring BPP中优雅的创建动态代理Bean
		一.前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean.通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFact ... 
- spring boot 动态注入bean
		方法一 SpringContextUtil public class SpringContextUtil { private static ApplicationContext application ... 
- Spring中默认bean名称的生成策略/方式修改
		最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义.完全不同的表.不同的处理逻辑.所以打算 ... 
- Spring @Scheduled定时任务动态修改cron参数
		在定时任务类上增加@EnableScheduling注解,并实现SchedulingConfigurer接口.(注意低版本无效) 设置一个静态变量cron,用于存放任务执行周期参数. 另辟一线程,用于 ... 
- Spring中如何动态注入Bean实例教程
		前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Be ... 
- Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
		在阅读Spring Boot源码时,看到Spring Boot中大量使用ImportBeanDefinitionRegistrar来实现Bean的动态注入.它是Spring中一个强大的扩展接口.本篇文 ... 
随机推荐
- Mybatis入门案例中设计模式的简单分析
			Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ... 
- 0014 标签显示模式:display(重点)
			目标: 理解 标签的三种显示模式 三种显示模式的特点以及区别 理解三种显示模式的相互转化 应用 实现三种显示模式的相互转化 2.1 什么是标签显示模式 什么是标签的显示模式? 标签以什么方式进行显示, ... 
- 解决css布局时两个div一个宽度固定另一个占满剩余宽度的问题
			/*左侧div*/ .left-div{width: 220px;height: 100%;position: fixed;background: #FFFFFF;} /*右侧div*/ .right ... 
- 使用vue-quill-editor富文本 实现图片上传
			1. 下载并引入 import { quillEditor, Quill } from "vue-quill-editor"; import { container, ImageE ... 
- zabbix监控mysql脚本(仅供参考)
			mysql客户端添加 /etc/zabbix/zabbix_agentd.d.userparameter_mysql.conf UserParameter=mysql.version,mysql -V ... 
- 「Luogu P2015」二叉苹果树 解题报告
			题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 ... 
- 「洛谷P1262」间谍网络 解题报告
			P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ... 
- Vue.js 入门 --- vue.js 安装
			本博文转载 https://blog.csdn.net/m0_37479246/article/details/78836686 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据 ... 
- Linux 7.5 SSH服务和SFTP服务分离
			SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ... 
- Java List集合的介绍与常用方法
			List接口的介绍 List接口简介: java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合. 在List集合 ... 
