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

Grails:在Bootstrap代码的存根关闭中访问spring bean?

在Grails应用中,要在Bootstrap代码的存根关闭中访问Spring Bean,您可以使用以下方法:

  1. 使用grailsApplication对象获取Spring Bean。

在Bootstrap类中,您可以通过grailsApplication对象访问Spring Bean。首先,确保您的Bean已经在resources.groovy文件中定义。例如:

代码语言:groovy
复制
// resources.groovy
beans = {
    myBean(com.example.MyBean) {
        // Bean properties
    }
}

然后,在Bootstrap类中,您可以使用grailsApplication对象获取MyBean实例:

代码语言:groovy
复制
// Bootstrap.groovy
class BootStrap {
    GrailsApplication grailsApplication

    def init = { servletContext ->
        MyBean myBean = grailsApplication.mainContext.getBean('myBean') as MyBean
        // Access Spring Bean properties or methods
    }
}
  1. 使用@Autowired注解注入Spring Bean。

您还可以使用@Autowired注解将Spring Bean直接注入到Bootstrap类中。首先,确保您的Bean已经在resources.groovy文件中定义。例如:

代码语言:groovy
复制
// resources.groovy
beans = {
    myBean(com.example.MyBean) {
        // Bean properties
    }
}

然后,在Bootstrap类中,使用@Autowired注解将MyBean注入到Bootstrap类中:

代码语言:groovy
复制
// Bootstrap.groovy
class BootStrap {
    @Autowired
    MyBean myBean

    def init = { servletContext ->
        // Access Spring Bean properties or methods
    }
}

这样,您就可以在Bootstrap代码的存根关闭中访问Spring Bean了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring代码获取Bean方式

获取springbean方式总结: 方法一:初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext..."> 说明:这样方式适用于采用Spring框架独立应用程序,须要程序通过配置文件手工初始化Spring情况。...然后通过它获取须要类实例。上面两个工具方式差别是,前者获取失败时抛出异常。后者返回null。...提供后三种方法能够实如今普通类中继承或实现对应类或接口来获取spring ApplicationContext对象,可是使用是一定要注意实现了这些类或接口普通java类一定要在Spring...Spring容器初始化时,不能通过下面方法获取Spring 容器,细节能够查看spring代码org.springframework.web.context.ContextLoader。

2.1K10
  • Spring 注册 Bean 配置定义和使用 Autowired

    因为项目的需要,我们使用了一个第三方电子邮件库,但是我们希望把这个库项目中注册成 Bean 然后随时在其他地方使用。Configuration在哪里注册?...我们通常可以 Configuration 类中进行注册。 Configuration 类,我们需要使用 @Configuration 这个注解。...如下图中显示代码: @Bean public MailgunMessagesApi mailgunMessagesApi() { return MailgunClient.config...同时在这个注册,我们使用了 Configuration 注解。如何使用在项目中如果需要对注册 Bean 进行使用的话。我们可以需要使用地方进行 @Autowired 就可以了。...使用也非常简单,类中直接用就可以了。https://www.ossez.com/t/spring-bean-autowired/14105

    1.7K10

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

    因为是人写代码,就一定会有错误,即使是老码农 就程序Bug来讲,会包括产品PRD流程上Bug、运营配置活动时候Bug、研发开发时功能实现Bug、测试验证时漏掉流程Bug、上线过程运维服务相关配置...这部分大家实习过程也可以对照Spring源码学习,这里实现也是Spring简化版,后续对照学习会更加易于理解 [spring-5-01.png] 属性填充要在类实例化创建之后,也就是需要在 AbstractAutowireCapableBeanFactory...另外是填充属性信息还包括了 Bean 对象类型,也就是需要再定义一个 BeanReference,里面其实就是一个简单 Bean 名称,具体实例化操作时进行递归创建和填充,与 Spring 源码实现一样...propertyValues : new PropertyValues(); } // ...get/set } Bean 注册过程是需要传递 Bean 信息,几个前面章节测试中都有所体现...每一个章节功能点我们都在循序渐进实现,这样可以让新人更好接受关于 Spring 设计思路。尤其是一些已经开发好类上,怎么扩充新功能时候设计更为重要。

    3.3K20

    Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发第8章 Spring Boot集成Groovy,Grails开发小结参考资料

    第8章 Spring Boot集成Groovy,Grails开发 本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版pms(项目管理系统)。... Groovy ,不再需要为字段编写 getter 和 setter 方法,因为 Groovy 会自动提供它们。...Grails这个独特框架被视为是提升工程师生产效率动态工具,因为其干脆API设计,合理默认值以及约定架构。与java无缝集成使得这个框架成为世界上众多框架首选。...具体实现源码org.grails.datastore.gorm里面。这个处理方案跟Spring-jpa思想基本是一样。都是通过注解元编程,动态生成相应方法代码。...类似这样子: default.blank.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3A\u7A7A gsp代码,以 g: 为前缀就是

    2.5K30

    8.2 Spring Boot集成Groovy、Grails开发小结参考资料

    8.2 Spring Boot集成Groovy、Grails开发 本章介绍Spring Boot集成Groovy,Grails开发。我们将开发一个极简版pms(项目管理系统)。... Groovy ,不再需要为字段编写 getter 和 setter 方法,因为 Groovy 会自动提供它们。...Grails这个独特框架被视为是提升工程师生产效率动态工具,因为其干脆API设计,合理默认值以及约定架构。与java无缝集成使得这个框架成为世界上众多框架首选。...具体实现源码org.grails.datastore.gorm里面。这个处理方案跟Spring-jpa思想基本是一样。都是通过注解元编程,动态生成相应方法代码。...类似这样子: default.blank.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3A\u7A7A gsp代码,以 g: 为前缀就是

    2.3K30

    Spring启动过程创建bean过程自动注入部分代码分析

    需要自动注入原因是基于控制反转理念产生IOC容器,我把所有需要用类变成Bean对象,当发现某个Bean需要用到我所拥有的其他Bean时候,我就自动将Bean实例赋予过去。   ...2.为什么现在使用自动注入方式会被放弃?     具体原因是 容易调用无关东西,不够灵活控制。 代码展示 //这里为什么要有取出属性值一步?...//因为 BeanDefinition后置处理 那一步我可能已经对某个属性进行赋值了,后面的对属性进行赋值就应该要检查避免进行覆盖。...如果是BY_NAME,它会根据Set方法setXXX,xxx作为bean名字去寻找,找不到才会根据BY_TYPE去找。   ...2.更进一步,我们可以发现,它其实是只要是Set方法便会去调用,不管你是不是用来进行注入。(所以说容易调用无关东西,不够灵活控制)

    36620

    Groovy on Grails 交流活动

    你当然也可以写一些简单 Java 类并将其对象持久化在数据库里,也可以像在 Java 中一样将源文件或 JAR 包引入应用程序,例如 EJB、Spring bean 等等。...所有的 Grails 应用程序都有一个 Spring bean 上下文,你可以自由添加任意 Java bean 进去,并在你应用程序访问它们。...“Grails 会令你女性更受欢迎。” 很抱歉,事实是截然相反。你会更加热衷于编码而不再乐于时不时地去拈花惹草。...如果你也有相同志趣,看看我幻灯片吧,它大意如下: 当我们发布了 Grails1.0 版本,Codehaus 访问带宽总量难以置信地上涨了 40GB。...这体现了一个大型 Grails 商业应用(至少我们 G2One 公司可以谈论这个事情了,呵呵)成功发布,此时已经有每月约 186 百万页访问量了。

    1.7K20

    Spring启动过程创建bean过程BeanDefinition后置处理部分代码分析

    意义   1.这部分代码看似很简洁,但是却便于扩展,而且对于增加功能也不用改动主体代码(策略模式,也是为什么要用设计模式原因)   2.其次是为什么要有这一步,这一步针对是 BeanDefinition...处理,正如我们经常在类加上一些依赖注入或者其他注解(这里便是为了让把这些注解封装成对象,塞入到BeanDefinition 初始化时候直接拿出用即可)  代码展示 // 后置处理合并后BeanDefinition...definition failed", ex); } mbd.postProcessed = true; } } //通过缓存拿出对应类型PostProcessor...对bean进行处理 protected void applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, Class<?...如postProcessMergedBeanDefinition方法不同类处理东西不同 CommonAnnotationBeanPostProcessor类(扫描@PostConstruct

    26620

    Spring启动过程实例化部分代码分析(Bean推断构造方法)

    【1】前言 实例化这一步便是doCreateBean方法   instanceWrapper = createBeanInstance(beanName, mbd, args);  这段代码。...【2】对于实例化疑问   对于SpringbeanBeanDefinition,需要通过实例化得到一个bean对象才会被放入容器,而实例化就需要用到构造方法。   ...,而通过@Autowired注解方式,需要Spring通过byType+byName方式去找到符合条件bean作为构造方法参数值。     ...故使用构造器创建实例后,Spring会将解析过后确定下来构造器或工厂方法保存在缓存,避免再次创建相同bean时再次解析(节约时间) */ boolean resolved = false...    createBeanInstance() 方法是 spring 实例化 bean 核心代码,它根据不同情况会调用四种实例化方法:       1)obtainFromSupplier()

    98030

    Dubbo常见属性配置(11)

    示例 通过spring配置 //关闭某个服务启动时检查 (没有提供者时报错...提供方和消费方配置访问版本,消费者配置对应老版本号,实现只支持访问老版本 // provider.xml // 版本1 version="1.0.0" <bean id="userServiceImpl01..." timeout="5000" retries="3" version="*" 四、本地存根 实现远程服务后,客户端通常只剩下接口,功能实现全服务器端,但提供方有些时候想再客户端调用真正实现之前也提供方执行部分逻辑...,比如:缓存,参数验证,调用失败后伪造容错数据等等,此时编写一个本地存根,远程引用接口服务消费者本地也有实现代码,如果满足要求才调用远程接口,如果不满足就不调用,怎么实现呢?...消费方实现远程接口本地存根实现,必须有一个有参构造器,传入是远程接口代理实现(dubbo默认会传进来) // consumer.xml <dubbo:reference id="UserService

    92210

    Spring启动过程创建bean过程初始化前部分代码分析

    实例化前作用     1.初始化前,也是Spring提供一个扩展点:BeanPostProcessor.postProcessBeforeInitialization()。     ...2.利用初始化前,可以对进行了依赖注入Bean进行处理。...使用示例     1.首先必须要添加@Component注解,因为处理器不加入容器是不会被使用     2.被调用时,这里bean是已经被实例化而且已经注入属性了(故可以看做是一个完整实例对象)...,其次这个处理器是每个Bean对象都要调用,如果处理只是针对某个Bean,或者某一类Bean,其实是要做区分。...2.Spring源码调用:       1)InitDestroyAnnotationBeanPostProcessor会在初始化前这个步骤执行@PostConstruct方法。

    41240

    OpenAPI规范3-Swagger2 美化使用

    可以支持json和yaml(一般使用yaml)格式数据类型。如下图: 2、构建 通过生成服务器存根和来自swagger规范客户端sdk,构建并启用OAS/Swagger 可编程语言。...;缺点也在于使用注解方式,过深代码本身交互。...1、swagger-ui-layer pom.xml引入swagger 和 swagger-ui-layer和依赖,其他与使用swagger2一致,maven依赖如下: ...swagger-ui-layer 默认访问地址是 http://{host}:{port}/docs.html,而美化界面如下: 和 2、Swagger-Bootstrap-UI Swagger-Bootstrap-UI...格式数据,框架如果是spring boot可以不用修改,直接使用,如果是Spring MVCweb.xml配置了DispatcherServlet,则需要追加一个url匹配规则,如下: <servlet

    6.4K20

    Java 近期新闻:JDK 2 进入Rampdown阶段一、JDK 24专家组成立、Apache NetBeans 22发布

    这意味着主线源代码库已 fork 到 JDK 稳定性库,不会再为 JDK 23 添加额外 JEP。...467: Markdown 文档注释 JEP 469: 向量 API(第八次孵化) JEP 471: 弃用 sun.misc.Unsafe 内存访问方法 JEP 473: 流收集器(第二次预览)...同样,Spring Cloud Stream Applications 2024.0.0 发布,包含了依赖项升级和一些显著变更,例如: README.adoc 文件对示例应用程序表格布局进行了简化,...Quarkus Quarkus 3.11.1,3.11 系列第一个维护版本,包含了文档改进、依赖项升级和一些显著变更,例如:通过安全标识过期时关闭连接来改进对 WebSockets Next 扩展安全集成支持...;为记录、封印类型和List、Map及Set接口中定义 of() 方法添加了 Java 代码模板;移除了已到达生命周期终点 Spring Framework 3.0 和 4.0 系列版本,并将 Spring

    14710

    10 Dubbo 配置实战

    可以提前发现服务提供方是否可用 示例代码 直接启动这个测试类,注意 spring 配置文件位置 我这里测试,现在是没有启动提供者 因为我们测试目的就是让他没有提供者,会不会有报错提示 /**...No provider available for the service service.HelloService from the url zookeeper: 关闭检查 spring.xml...配置文件中加上就不会有异常提示了 可以看到,我这里这个配置是注释掉实际开发我们是需要这个异常提示,不推荐关闭 <!...spring 容器找对应 bean 需要在直接参数配置 bean 名称 和 上面图中 id 对应 启动测试 注意 每次修改配置文件 都需要重启项目 访问: http://localhost...如果你能提前将这些东西准备好,办理过户,1 个小时足矣,这就是“房产 中介办事效率高原因” 话不多说,先在消费者处理一些业务逻辑,再调用提供者过程,就是“本地存根” 示例代码 代码实现肯定在 消费者

    19710

    十一.SpringBoot配置Swagger3

    SpringFox是 spring 社区维护一个项目(非官方),帮助使用者将 swagger2 集成到 Spring 。...Swagger Codegen:它可以通过为 OpenAPI(以前称为 Swagger)规范定义任何 API 生成服务器存根和客户端 SDK 来简化构建过程。...在这个版本代码、注释、bug报告方面有一些非常惊人贡献,看到人们问题论坛上跳槽来解决问题,我感到很谦卑。它确实激励我克服“困难”,开始认真地工作。有什么更好办法来摆脱科维德忧郁!...规范 2.SpringBoot配置Swagger3 ▌pom.xml引入Swagger3包。...SpringBoot2.6.1可能会有一个问题Failed to start bean 'documentationPluginsBootstrapper'; ,启动文件里加上 @EnableWebMvc

    1.5K20
    领券