diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/SpringUtil.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/SpringUtil.java index ae810addd..c019f9d75 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/SpringUtil.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/spring/SpringUtil.java @@ -89,18 +89,6 @@ public class SpringUtil implements ApplicationContextInitializer Bean类型 - * @param name Bean名称 - * @return Bean - */ - @SuppressWarnings("unchecked") - public static T getBean(final String name) { - return (T) getBeanFactory().getBean(name); - } - /** * 通过class获取Bean * @@ -110,6 +98,10 @@ public class SpringUtil implements ApplicationContextInitializer T getBean(final Class clazz, final Object... args) { + final ListableBeanFactory beanFactory = getBeanFactory(); + if (ArrayUtil.isEmpty(args)) { + return beanFactory.getBean(clazz); + } return getBeanFactory().getBean(clazz, args); } @@ -130,11 +122,17 @@ public class SpringUtil implements ApplicationContextInitializer Bean类型 * @return Bean对象 * @since 5.8.34 */ - public static Object getBean(final String name, final Object... args) { - return getBeanFactory().getBean(name, args); + @SuppressWarnings("unchecked") + public static T getBean(final String name, final Object... args) { + final ListableBeanFactory beanFactory = getBeanFactory(); + if (ArrayUtil.isEmpty(args)) { + return (T) beanFactory.getBean(name); + } + return (T) beanFactory.getBean(name, args); } /** diff --git a/hutool-extra/src/test/java/org/dromara/hutool/extra/spring/SpringUtilTest.java b/hutool-extra/src/test/java/org/dromara/hutool/extra/spring/SpringUtilTest.java index 477f47576..e470faf9f 100644 --- a/hutool-extra/src/test/java/org/dromara/hutool/extra/spring/SpringUtilTest.java +++ b/hutool-extra/src/test/java/org/dromara/hutool/extra/spring/SpringUtilTest.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Bean; +import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -53,8 +54,6 @@ public class SpringUtilTest { final Demo2 registerBean2 = SpringUtil.getBean("registerBean"); Assertions.assertEquals(123, registerBean2.getId()); Assertions.assertEquals("222", registerBean2.getName()); - - } /** @@ -115,6 +114,16 @@ public class SpringUtilTest { assert "dev".equals(activeProfile2); } + @Test + void getEnvironmentTest() { + ConfigurableEnvironment bean = SpringUtil.getBean(ConfigurableEnvironment.class); + Assertions.assertNotNull(bean); + bean = SpringUtil.getBean(ConfigurableEnvironment.class, new Object[0]); + Assertions.assertNotNull(bean); + bean = SpringUtil.getBean(ConfigurableEnvironment.class, (Object[])null); + Assertions.assertNotNull(bean); + } + @Data public static class Demo2{ private long id;