首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从freemarker宏中的上下文中获取spring bean?

从freemarker宏中获取Spring Bean,可以通过以下步骤实现:

  1. 在Spring配置文件中,将freemarker配置为视图解析器,并将Spring上下文注入到freemarker配置中。例如,在Spring MVC中的配置文件中添加以下代码:
代码语言:xml
复制
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/views/" />
    <property name="freemarkerVariables">
        <map>
            <entry key="springContext" value-ref="springContext" />
        </map>
    </property>
</bean>
  1. 创建一个宏,通过springContext获取Spring上下文中的Bean。例如,在freemarker模板中创建一个宏:
代码语言:ftl
复制
<#macro getBean beanName>
    <#assign bean = springContext.getBean(beanName) />
    ${bean}
</#macro>
  1. 在模板中使用宏来获取Spring Bean。例如,在模板中调用宏来获取名为"userService"的Bean:
代码语言:ftl
复制
<@getBean "userService" />

这样,宏会从Spring上下文中获取名为"userService"的Bean,并将其输出到模板中。

需要注意的是,上述代码中的"springContext"是在第一步中配置的freemarker变量名称,可以根据实际情况进行修改。另外,"userService"是一个示例,你可以根据实际的Spring Bean名称进行替换。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云容器服务(TKE)。

  • 腾讯云云服务器(CVM):提供高性能、可扩展的云服务器实例,适用于各种应用场景。详情请参考:腾讯云云服务器
  • 腾讯云容器服务(TKE):基于Kubernetes的容器服务,提供高可用、弹性伸缩的容器集群管理能力,适用于容器化应用的部署和管理。详情请参考:腾讯云容器服务
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring 应用上下获取 Bean 常用姿势

前言 通常,在Spring应用程序,当我们使用 @Bean,@Service,@Controller,@Configuration 或者其它特定注解将 Bean 注入 Spring IoC 。...应用程序上下文中获取 Bean 今天我们将来学习如何 ApplicationContext 获取 Bean 。因为有些情况下我们不得不从应用程序上下文中获取 Bean 。...2.1 获取所有的 Bean ApplicationContext 提供了获取所有已经成功注入 Spring IoC 容器 Bean 名称方法 getBeanDefinitionNames() 。...总结 在本文中,我们学习如何 Spring 应用上下文中获取所有 Bean 列表。...有时我们需要检查我们期望 Bean 是否在 Spring 上下文中加载,或者我们需要检查 Spring IoC 声明特定 Bean

3.1K10

如何手动获取 Spring 容器 bean

ApplicationContextAware 接口作用: 先来看下 Spring API 对于 ApplicationContextAware 这个接口描述: ?...即是说,当一个类实现了这个接口之后,这个类就可以方便地获得 ApplicationContext 所有bean。...换句话说,就是这个类可以直接获取Spring配置文件,所有有引用到bean对象。 如何使用 ApplicationContextAware 接口? 如何使用该接口?很简单。...2、在Spring配置文件中注册该工具类 之所以我们能如此方便地使用该工具类来获取,正是因为Spring能够为我们自动地执行 setApplicationContext 方法,显然,这也是因为IOC缘故... 3、编写方法进行使用 一切就绪,我们就可以在需要使用地方调用该方法来获取

2.6K10
  • 工具类如何获取Spring 容器 Bean

    Aware 接口 小伙伴们知道,Spring 容器最大特点在于所有的 Bean 对于 Spring 容器存在是没有意识,因此我们常说理论上你可以无缝将 Spring 容器切换为其他容器(然而在现实世界...当然这只是一个理论,在实际开发,我们往往要用到 Spring 容器为我们提供诸多资源,例如想要获取到容器配置、获取到容器 Bean 等等。...在这种情况下,就需要 Spring 容器 Bean 真正意识到 Spring 容器存在,才能要到这些东西,那么如何让一个 Bean 意识到 Spring 容器存在呢?...ApplicationContextAware:实现该接口对象可以获取到一个 ApplicationContext 对象,通过 ApplicationContext 可以获取容器 Bean、环境等信息...容器所管理 Bean 获取Spring 容器 Bean 了。

    1.2K10

    Spring 容器获取 Bean 实例主要方式

    使用BeanFactory直接获取(不推荐) 使用BeanFactory工厂中直接获取Bean实例,但是XmlBeanFactory类已经废弃,因此不建议使用,测试代码如下: /** * 方式一:XmlBeanFactory...继承自抽象类ApplicationObjectSupport 可以继承抽象类ApplicationObjectSupport并将自己继承类注入到Spring容器,示例代码如下: /** * 方法三...return super.getApplicationContext().getBean(beanName); } } 最后莫忘了将Bean注入到Spring容器,通过注解,或者配置均可,...继承自抽象类WebApplicationObjectSupport 可以继承抽象类WebApplicationObjectSupport并将自己继承类注入到Spring容器,示例代码如下: /**...return super.getWebApplicationContext().getBean(beanName); } } 最后莫忘了将Bean注入到Spring容器

    55120

    如何在非Spring容器管理类中注入获取 Spring容器 Bean

    如何在非Spring容器管理类中注入/获取 Spring容器 Bean? 前言:此文仅限新手入行,大佬回避。...什么是被Spring容器管理类? 只要是被称之为Bean类就是被Spring容器管理类。...不了解可以看看小简写这一篇: 将Bean交给Spring容器管理几种方式 在非Spring管理怎么办? 有时候我们就是需要在非Spring管理类中使用Bean怎么办呢?...比如我这一篇: 踩坑篇之WebSocket实现类无法使用@Autowired注入对象 解决方法 我们定义一个上下文类,在SpringBean全部扫描完成后,我们去使用类去实现ApplicationContextAware...接口,重写setApplicationContext方法,获取到ApplicationContext数据后,放到静态属性

    4K40

    SpringBoot 之 普通类获取Spring容器bean

    容器,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通Java类,想直接使用spring提供其他对象或者说有一些不需要交给spring管理,但是需要用到spring一些对象...但是往往我们所做都是Web Application,这时我们启动spring容器是通过在web.xml文件配置,这样就不适合使用上面的方式在普通类去获取对象了,因为这样做就相当于加载了两次spring...容器,而我们想是否可以通过在启动web服务器时候,就把Application放在某一个类,我们通过这个类在获取,这样就可以在普通类获取spring bean对象了,让我们接着往下看 普通类调用Spring... bean对象: 可以参考:http://412887952-qq-com.iteye.com/blog/1479445 这里有更多这方面的介绍,比较详细 下面介绍在springboot如何使用...然后我们编写测试controller,并从刚才写springutil获取这个bean ?

    3.6K10

    【死磕 Spring】----- IOC 之单例缓存获取单例 bean

    , name, beanName, null); } 首先调用 getSingleton() 从缓存获取 bean,在上篇博客 【死磕 Spring】----- 加载 bean 之 开启...bean 加载提到过,Spring 对单例模式 bean 只会创建一次,后续如果再获取bean 则是直接单例缓存获取,该过程就体现在 getSingleton() 。...到这里从缓存获取 bean 过程已经分析完毕了,我们再看开篇代码段,从缓存获取 bean 后,若其不为 null 且 args 为空,则会调用 getObjectForBeanInstance(...因为我们从缓存获取 bean 是最原始 bean 并不一定使我们最终想要 bean,怎么办呢?...至此,从缓存获取 bean 对象过程已经分析完毕了。 下面两篇博客分析,如果单例缓存没有获取到单例 bean,则 Spring如何处理

    1.3K40

    Spring Boot 如何修改Bean加载顺序?

    最近在面试时候。面试官闻到了这个问题:说说Spring Boot 如何修改Bean启动顺序?好家伙,我只听说过JVM加载顺序,这一下把我唬住了,根本没听说,这玩意儿还能修改了?...原来在Spring Boot中有一个@Order注解,可以修改Bean启动顺序,接下来对其进行说明。...---- 创建一个Spring Boot项目 首先,先搭建一个Spring Boot开发环境 随意引入一些组件即可 项目创建成功 @Order注解 @Order定义带注解组件排序顺序。...Spring加载Bean时候使用@Order注解 @Order()默认值为int最大值,优先级最低 测试效果 创建Class A: import org.slf4j.Logger; import org.slf4j.LoggerFactory...String[] args) { SpringApplication.run(DemoApplication.class, args); } } 接下来看一下最终运行效果: 控制台打印消息可以看到

    1.5K10

    Spring核心技术》第4章:深度解析IOC容器获取Bean过程

    ❞ 大家好,我是冰河~~ ---- 「本章难度」:★★★★☆ 「本章重点」:进一步了解IOC容器获取Bean过程,初步了解IOC容器使用三级缓存解决循环依赖问题,为后续深度学习Spring创建Bean...也就是说,如果是多实例Bean,IOC容器不会管理Bean对象。 那IOC容器获取Bean具体过程是怎样呢?想深度学习Spring源码小伙伴继续往下看。...本章,就一起分析invokeBeanFactoryPostProcessors()方法获取Bean对象过程。 IOC容器获取Bean过程源码时序图如图4-1和4-2所示。...五、总结 IOC容器获取Bean大体流程分析完了,总结下吧? 本章,主要对IOC容器获取Bean过程进行了简单介绍。...Spring为何把创建Bean对象设计的如此复杂?你觉得是出于哪方面的考虑呢? Spring设计,你学到了什么?

    1K20

    如何Spring 解决 bean 循环依赖

    引言 在 Spring bean 往往不会独立存在,bean 相互依赖是极为常见。...在这一过程,错综复杂 bean 依赖关系一旦造成了循环依赖,往往十分令人头疼,那么,作为使用者,如果遇到了循环依赖问题,我们应该如何去解决呢?本文我们就来为您详细解读。 2....而在代码执行过程,真正要去创建 CircularDependencyB 对象时,此时在 Spring 上下文中,早已存在了 CircularDependencyA bean 对象实例,CircularDependencyB...Spring 上下获取而产生循环依赖问题。...上下文初始化 bean 如果一个 Bean Spring 上下文中获取另一个 Bean,我们就可以手动去设置 Bean 依赖项,避免 Spring 解析依赖项过程中产生循环依赖。

    2.9K20

    SpringMVC 解毒4

    BeanNameViewResolver 可谓是真的简单,它会根据viewNameweb应用上下文中获取到实现View接口bean并返回,web应用上下哪来?...最后,如果defaultViews如果不为空,还会获取defaultViewsView。 代码第8行调用getBestView方法挑选出第7行获取所有View。如何挑选?...BeanNameViewResolver 则是简单地直接现有的应用上下获取View。...5.11 小结 看完这么多 ViewResolver 实现,我们发现实际上通过viewName获取View实现类分为这几种。 第一种是直接web应用上下文找name为viewNamebean。...第二种是指定配置文件加载应用上下文,再在上下文中查找name为viewNamebean。 第三种是通过判断viewName对应文件是否存在来决定是否适用该View。 6 View ?

    61320

    微服务架构Day03-SpringBoot之web开发配置

    ,包括原始和非原始指数 获取数组长度 定义: 调用可以通过位置或名称进行参数传递 参数可以设定默认值,在调用时如果没有指定该参数,则使用默认值代替 通过 body... 可以支持嵌套 通过文本表达名称” 来直接调用某个 允许先使用再定义 可以定义局部变量 命名空间: 使用多个名称空间变数....这个在建立 “库” 内置与Java语言无关字符串,列表,Map操作方法 能提示模版拼写错误以及其他错误 当访问一个不存在变量时,freemarker在执行模版时会报错 通过配置,可以指定freemarker...在发生此类错误时停止执行,还是忽略该错误,同时freemarker会在日志记录此问题 输入错误指令名称,freemarker将抛出一个异常 更高级文本输出工具: 将模版块封装在一组标记,这样可以应用...如何修改SpringBoot默认配置 SpringBoot在自动配置很多组件时,先看容器中有没有已经配置 (@Bean,@Component) 好组件,如果有,就用已经配置好,如果没有,才自动配置

    89610

    spring项目里面,通过上下文类ApplicationContext 获取到我们想要bean对象,而不是注解获取

    目录 1 问题 2 写一个工具类 3 使用工具类 1 问题 我们spring项目,一般bean对象创建,就是靠注解,但是我现在想要在代码里面,不是使用注解获取bean对象,而是在上下文对象里面获取到...bean对象,我们都知道,我们项目一起动,就扫描注解,让被注解类,创建bean对象,放到spring容器里面,之后就是从容器里面获取到对象,所以获取时候,我们就可以这样获取 2 写一个工具类 import...Spring上下文 * * @return */ public static ApplicationContext getApplicationContext()...{ return applicationContext; } /** * 通过name获取Bean * * @param name...clazz) { return getApplicationContext().getBean(clazz); } /** * 通过name,以及Clazz返回指定Bean

    1.3K10

    Spring Bean实例过程如何使用反射和递归处理Bean属性填充?

    专栏,获取完整源码 Spring Bean 容器类关系,如图 5-2 [图 5-2] 本章节需要新增加3个类,BeanReference(类引用)、PropertyValue(属性值)、PropertyValues...在 applyPropertyValues ,通过获取 beanDefinition.getPropertyValues() 循环进行属性填充操作,如果遇到是 BeanReference,那么就需要递归获取...userService.queryUserInfo(); } 与直接获取 Bean 对象不同,这次我们还需要先把 userDao 注入到 Bean 容器。...(uId) 那么我们在看看Debug调试情况下,有没有进入到实现 Bean 属性填充,如下: [spring-5-03.png] 好,就是截图这里,我们看到已经开始进行属性填充操作了,当发现属性是...另外在框架实现过程中所有的类名都会参考 Spring 源码,以及相应设计实现步骤也是与 Spring 源码对应,只不过会简化一些流程,但你可以拿相同类名,去搜到每一个功能在 Spring 源码实现

    3.3K20
    领券