当前位置: 首页 > 知识库问答 >
问题:

Spring boot@Autowire HazelcastInstance不带xml或yaml

罗韬
2023-03-14

我试图在没有xml/yaml文件的情况下使用Spring Boot运行Hazelcast客户端应用程序,但我找不到通过Spring管理我的Hazelcast实例的方法。这是我的代码:

@Configuration
public class ConfigurationClass {

    @Autowired
    private Environment env;

    @Bean
    public ClientConfig clientConfig() {
        ClientConfig clientConfig = new ClientConfig();
        ClientNetworkConfig networkConfig = clientConfig.getNetworkConfig();
        networkConfig.addAddress("127.0.0.1:5701").setSmartRouting(true).addOutboundPortDefinition("34700-34710").setRedoOperation(true).setConnectionTimeout(5000);

        return clientConfig;

    }

    @Bean
    public HazelcastInstance hazelcastInstance(ClientConfig clientConfig) {
        return HazelcastClient.newHazelcastClient(clientConfig);
    }
}

当我尝试将hazelcast实例自动关联到主类时,我得到NULL

主要类别代码:

public class HazelcastServer implements Serializable {

    private static final long serialVersionUID = -1798311083790835361L;

    @Autowired
    private static HazelcastInstance hazelcastInstance;

    public static void main(String[] args) {
  System.out.println("hazelcastInstance: " + hazelcastInstance);
 }
}

共有1个答案

雍马鲁
2023-03-14

您需要使用CommandLineRunner,以便Spring构建您的上下文(换句话说,创建@Bean并自动连接它们)

请参见此处的教程,以获得良好的开端:

https://spring.io/guides/gs/spring-boot/

基本上,您需要执行以下操作,而不是公共静态void main

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {

            System.out.println("Let's inspect the beans provided by Spring Boot:");

            String[] beanNames = ctx.getBeanDefinitionNames();
            Arrays.sort(beanNames);
            for (String beanName : beanNames) {
                System.out.println(beanName);
            }

        };
    }

}

@SpringBootApplicationSpringApplication。运行part告诉Spring它的神奇之处,阅读我链接的教程了解详细信息。

 类似资料:
  • 我正在尝试将vaadin与spring(没有Spring Boot)和基于java注释的spring部分配置结合起来。 自动连接似乎适用于vaadin ui部分,但不适用于“自定义ui类”(例如,“公共类LoginScreen扩展自定义组件”)。我在SysOut上得到一个NPE或一个空对象。 此外,我注意到“@ComponentScan(base Packages={"net.myapp"})”没

  • 我的用例有点奇怪,但基本上,我想读取yaml文件的一部分并将其映射到Spring应用程序中适当的java对象。这是Spring中一个非常常见且琐碎的操作(只需使用@ConfigurationProperties)。 然而,在我的情况下,我希望在生命周期的早期完成这一阅读,即在BeanFactoryPostProcessor挂接的时候,以便使用yml中指定的指令动态创建多个bean。 我可以和app

  • 我用reactive mongo创建了简单的Webflux (kotlin)应用程序。控制器有一个GET方法,它是返回流(来自一个集合的2个对象)。我使用Apache基准测试,我注意到一件事:我有i7 10700 (8个8核)。如果我设置system . set property(" reactor . netty . ioworkercount "," 8 "),性能会提高。对于16个netty

  • 我尝试使用bytebuddy在springboot中实现aop。代码如下: springboot的监听器如下: 最后,在springboot启动中注册侦听器: 当我启动应用程序时,调试记录器显示良好。然而,当请求被处理时,aop不起作用。我做错了什么?我很困惑。。。

  • 问题内容: 是为了什么? 之间有什么区别? 和 问题答案: 使该变量可用于子流程。 那是, 表示变量名称可用于您从该Shell进程运行的 任何 进程。如果您希望进程使用此变量,请使用,然后从该Shell运行该进程。 表示变量作用域仅限于外壳程序,不适用于任何其他进程。您可以将其用于(例如)循环变量,临时变量等。 重要的是要注意,导出变量不会使其对父进程可用。也就是说,在生成的进程中指定和导出变量不

  • 有没有办法绕过授权?