用spring的InitializingBean的afterPropertiesSet初始化

    xiaoxiao2026-05-13  11

     

    实例

     

    @Component public class NettyServer implements InitializingBean{ @Resource private ChannelInitializer<SocketChannel> childHandler; @Value("${netty.host}") private String host; @Value("${netty.port}") private int port; public void afterPropertiesSet() throws Exception { System.out.println("server afterPropertiesSet"); EventLoopGroup parentGroup = new NioEventLoopGroup(Runtime.getRuntime() .availableProcessors() * 2); EventLoopGroup childGroup = new NioEventLoopGroup(Runtime.getRuntime() .availableProcessors() * 2); ServerBootstrap server = new ServerBootstrap(); server.group(parentGroup, childGroup); server.channel(NioServerSocketChannel.class); server.childHandler(childHandler); server.bind(new InetSocketAddress(host, port)).sync(); } public void setChildHandler(ChannelInitializer<SocketChannel> childHandler) { this.childHandler = childHandler; } public void setHost(String host) { this.host = host; } public void setPort(int port) { this.port = port; } }

    参考

     

     

    org.springframework.beans.factory包下有一个接口是InitializingBean 只有一个方法: /**   * Invoked by a BeanFactory after it has set all bean properties supplied   * (and satisfied BeanFactoryAware and ApplicationContextAware).   * <p>This method allows the bean instance to perform initialization only   * possible when all bean properties have been set and to throw an   * exception in the event of misconfiguration.   * @throws Exception in the event of misconfiguration (such   * as failure to set an essential property) or if initialization fails.   */  void afterPropertiesSet() throws Exception;   这个方法将在所有的属性被初始化后调用。 但是会在init前调用。 但是主要的是如果是延迟加载的话,则马上执行。 所以可以在类上加上注解: import org.springframework.context.annotation.Lazy; @Lazy(false) 这样spring容器初始化的时候afterPropertiesSet就会被调用。  

    只需要实现InitializingBean接口就行。

     

     

    转载请注明原文地址: https://ju.6miu.com/read-1309644.html
    最新回复(0)