-1

嗨,我正在使用 Spring 3

我正在使用

applicationContext.getBeansOfType

是否有可能只获取当前范围内已经实例化的 bean?

我不想实例化当前请求中尚未使用的 Bean。

4

1 回答 1

1

我认为不是,但你可以写一个,比如:

public static List<Object> getBeansInScope(Class<?> type, AbstractApplicationContext ctx, int scope) {
        List<Object> beans = new ArrayList<Object>();
        String[] names = ctx.getBeanNamesForType(type);
        RequestAttributes attributes = RequestContextHolder.currentRequestAttributes();

        for (String name : names) {
            Object bean = attributes.getAttribute(name, scope);
            if (bean != null) 
                beans.add(bean);
        }

        return beans;
    }

这仅适用于请求和会话范围。

于 2013-03-22T11:45:45.763 回答