首页
学习
活动
专区
工具
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的方式

获取spring中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext...">bean> 说明:这样的方式适用于采用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方法便会去调用,不管你是不是用来进行注入的。(所以说容易调用无关的东西,不够灵活控制)

    37020

    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在不同类中处理的东西不同 CommonAnnotationBeanPostProcessor类(扫描@PostConstruct

    27020

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

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

    99230

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

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

    41540

    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

    92510

    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 MVC在web.xml中配置了DispatcherServlet,则需要追加一个url匹配规则,如下: <servlet

    6.5K20

    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

    16910

    10 Dubbo 配置实战

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

    22710

    这逆天的框架!一行代码竟超越Hibernate、MyBatis等一众框架100倍!

    前言 在后端与数据库交互中,hibernate 和 mybatis、data-jdbc 等等 ORM 是我们经常会选用的技术框架! 这些ORM框架,在增、删、改上都提供了快捷、方便的操作。...Bean Searcher简介 Bean Searcher 绝对不是一个重复的 ORM 轮子。因为从未有过一个功能复杂的检索接口可以简单的只剩一行代码。...但使用 Bean Searcher,只需 一行代码便可实现上述要求!!!我们一起来看! 安装 这里选用的是 Maven 构建的方式,在Spring Boot中集成使用。 Bean Searcher可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。 此外,Bean Searcher扩展性很强。...用户可自定义扩展 Bean Searcher 中的任何组件!

    6400
    领券