Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring Boot@ComponentScan找到候选组件类,但不注入@Configuration bean_Spring Boot - Fatal编程技术网

Spring boot Spring Boot@ComponentScan找到候选组件类,但不注入@Configuration bean

Spring boot Spring Boot@ComponentScan找到候选组件类,但不注入@Configuration bean,spring-boot,Spring Boot,我有@SpringBootApplication和@ComponentScan({“myPackage”}),在myPackage中,我有一个用@Configuration或@Component注释的类。当我启动spring boot应用程序时,日志显示: DEBUG [main] org.sprin.conte.annot.ClassPathScanningCandidateComponentProvider 437 scanCandidateComponents: Identified ca

我有
@SpringBootApplication
@ComponentScan({“myPackage”})
,在
myPackage
中,我有一个用
@Configuration
@Component
注释的类。当我启动spring boot应用程序时,日志显示:

DEBUG [main] org.sprin.conte.annot.ClassPathScanningCandidateComponentProvider 437 scanCandidateComponents: Identified candidate component class: file [C:\Web\project\bin\main\myPackage\Config.class]
但是没有任何东西将类或其bean注入到应用程序中

它看起来与

代码

在myPackage.Client中

package myPackage;

import java.util.UUID;

import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import org.apache.logging.log4j.Logger;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.logging.log4j.LogManager;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.data.gemfire.cache.config.EnableGemfireCaching;
import org.springframework.data.gemfire.config.annotation.ClientCacheApplication;
import org.springframework.data.gemfire.config.annotation.EnableClusterDefinedRegions;
import org.springframework.data.gemfire.config.annotation.EnablePdx;
import org.springframework.data.gemfire.config.annotation.EnablePool;
import org.springframework.data.gemfire.config.annotation.EnablePool.Locator;
import org.springframework.data.gemfire.config.annotation.EnableStatistics;
import org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession;

@ClientCacheApplication(name = "Web", logLevel = "debug")
@EnablePool(name = "webPool", subscriptionEnabled = true)
@EnableClusterDefinedRegions(clientRegionShortcut=ClientRegionShortcut.CACHING_PROXY)
@EnablePdx
@EnableStatistics
@EnableGemFireHttpSession(poolName = "webPool")
@EnableGemfireCaching
// @EnableWebFlux
public class Client {

    private static final Logger log = LogManager.getLogger(Client.class);

    @Resource
    private Region<String, String> myAdmin;

    @PreDestroy
    public void onDestroy() throws Exception {

        log.info("onDestroy");

        String guid = UUID.randomUUID().toString().substring(0, 8).toUpperCase();           
        myAdmin.put(guid, "Web Shutdown");

        log.traceExit();
    }

    @Bean
    ApplicationRunner StartedUp(){      
        log.traceEntry("StartedUp");

        return args -> {            
        String guid = UUID.randomUUID().toString().substring(0, 8).toUpperCase();       
        myAdmin.put(guid, "Web Started");

        log.traceExit();
        };
    }

    // Required to resolve property placeholders in Spring @Value annotations.
    @Bean
    static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        log.traceEntry("propertyPlaceholderConfigurer");
        return new PropertySourcesPlaceholderConfigurer();
    }
}
package-myPackage;
导入java.util.UUID;
导入javax.annotation.PreDestroy;
导入javax.annotation.Resource;
导入org.apache.logging.log4j.Logger;
导入org.apache.geode.cache.Region;
导入org.apache.geode.cache.client.ClientRegionShortcut;
导入org.apache.logging.log4j.LogManager;
导入org.springframework.boot.ApplicationRunner;
导入org.springframework.context.annotation.Bean;
导入org.springframework.context.support.propertysourcesplaceplaceconfigurer;
导入org.springframework.data.gemfire.cache.config.EnableGemfireCaching;
导入org.springframework.data.gemfire.config.annotation.ClientCacheApplication;
导入org.springframework.data.gemfire.config.annotation.EnableClusterDefinedRegions;
导入org.springframework.data.gemfire.config.annotation.EnablePdx;
导入org.springframework.data.gemfire.config.annotation.EnablePool;
导入org.springframework.data.gemfire.config.annotation.EnablePool.Locator;
导入org.springframework.data.gemfire.config.annotation.EnableStatistics;
导入org.springframework.session.data.gemfire.config.annotation.web.http.enablegmfirehttpsession;
@ClientCacheApplication(name=“Web”,logLevel=“debug”)
@启用池(name=“webPool”,subscriptionEnabled=true)
@EnableClusterDefinedRegions(clientRegionShortcut=clientRegionShortcut.CACHING_PROXY)
@使能PDX
@使能统计
@EnableGemFireHttpSession(poolName=“webPool”)
@启用FireCaching
//@EnableWebFlux
公共类客户端{
私有静态最终记录器log=LogManager.getLogger(Client.class);
@资源
私人区域管理;
@发情前期
public void ondestory()引发异常{
日志信息(“onDestroy”);
字符串guid=UUID.randomUUID().toString().substring(0,8).toUpperCase();
myAdmin.put(guid,“Web关闭”);
log.traceExit();
}
@豆子
ApplicationRunner已启动(){
日志跟踪(“启动”);
返回args->{
字符串guid=UUID.randomUUID().toString().substring(0,8).toUpperCase();
myAdmin.put(guid,“Web启动”);
log.traceExit();
};
}
//需要解析Spring@Value注释中的属性占位符。
@豆子
静态属性资源占位符配置器属性PlaceHolderConfigure(){
日志跟踪(“PropertyPlaceHolderConfigure”);
返回新属性资源占位符配置器();
}
}
在myPackage.Config中

package myPackage;

import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.gemfire.client.ClientRegionFactoryBean;

@Configuration
public class Config {
    private static final Logger log = LogManager.getLogger(Config.class);

@Bean("myRegion")
public Region<String, Object> myRegion(GemFireCache cache) {
    log.traceEntry();

    Region<String, Object> r = cache.getRegion("myRegion");
    r.setUserAttribute(ClientRegionShortcut.CACHING_PROXY);

    return r;
    }
}
package-myPackage;
导入org.apache.geode.cache.GemFireCache;
导入org.apache.geode.cache.Region;
导入org.apache.geode.cache.client.ClientRegionShortcut;
导入org.apache.logging.log4j.LogManager;
导入org.apache.logging.log4j.Logger;
导入org.springframework.context.annotation.Bean;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.data.gemfire.client.ClientRegionFactoryBean;
@配置
公共类配置{
私有静态最终记录器log=LogManager.getLogger(Config.class);
@豆(“我的区域”)
公共区域myRegion(GemFireCache缓存){
log.traceEntry();
Region r=cache.getRegion(“myRegion”);
r、 setUserAttribute(ClientRegionShortcut.CACHING_PROXY);
返回r;
}
}

Config
类中定义您正在使用
Region
作为返回类型的bean。其中,在您的
客户机
类中定义了
区域
。这里很明显是类型不匹配,因此bean不会加载。

您能提供相关的代码吗?您怎么说它不注入@Configuration。此注释用于配置其他bean?请用更多信息展开问题。不,这是另一个用于放置和获取管理员消息的区域“myAdmin”。我希望将另一个“myRegion”区域设置为bean,以便以后订阅和取消订阅感兴趣的事件……您能否在启用调试的情况下运行spring应用程序,查看自动配置报告中的内容,并检查spring是否将
myRegion
映射到
region
?在这里发布报告也会有所帮助。
package myPackage;

import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.gemfire.client.ClientRegionFactoryBean;

@Configuration
public class Config {
    private static final Logger log = LogManager.getLogger(Config.class);

@Bean("myRegion")
public Region<String, Object> myRegion(GemFireCache cache) {
    log.traceEntry();

    Region<String, Object> r = cache.getRegion("myRegion");
    r.setUserAttribute(ClientRegionShortcut.CACHING_PROXY);

    return r;
    }
}