相关的:
@configurationproperties
获取此配置;@autowire
在应用程序中创建bean。示例:使通过spring配置声明基于咖啡因的缓存
@beans
的数量成为可能。以下是基于类似问题的公认答案的实现:
首先,引导自动配置模块:
@Component
@ConfigurationProperties
@Data
public class Props {
private LocalCacheConf cache = new LocalCacheConf();
@Data
public static class LocalCacheConf {
/**
* List of caches to create, with accompanying configuration.
*/
private List<CacheDef> caches = new ArrayList<>();
@Data
public static class CacheDef {
private String name;
private CaffeineCacheConf properties;
}
@Data
public static class CaffeineCacheConf {
private long maximumSize = -1;
}
}
}
@Configuration
@Slf4j
public class LocalCacheConfig implements BeanFactoryAware {
@Autowired private Props props;
@Setter private BeanFactory beanFactory;
private CaffeineCacheManager localCacheManager;
@PostConstruct
public void configure() {
setCacheManager();
createCaches( props.getCache() );
}
private void createCaches( LocalCacheConf locCacheConf ) {
ConfigurableBeanFactory configurableBeanFactory = (ConfigurableBeanFactory) beanFactory;
for ( CacheDef cacheProps : locCacheConf.getCaches() ) {
Cache cache = createAndConfigureCache(
cacheProps.getName(),
cacheProps.getProperties()
);
configurableBeanFactory.registerSingleton( cacheProps.getName(), cache );
}
}
private Cache createAndConfigureCache( String name, CaffeineCacheConf props ) {
Caffeine<Object, Object> c = Caffeine.newBuilder().recordStats();
if ( props.getMaximumSize() >= 0 ) {
c.maximumSize( props.getMaximumSize() );
}
// can extend config to include additional properties
localCacheManager.setCaffeine( c );
log.info( "building [{}] cache with config: [{}]", name, c.toString() );
return localCacheManager.getCache( name );
}
private void setCacheManager() {
log.info( "creating {}...", "localCacheManager" );
localCacheManager = new CaffeineCacheManager();
( (ConfigurableBeanFactory) beanFactory )
.registerSingleton( "localCacheManager", localCacheManager );
}
}
cache:
caches:
- name: c1
properties:
maximumSize: 50
- name: c2
properties:
maximumSize: 5000
如果这是一个Spring Boot项目,请查看:
https://docs.spring.io/spring-boot/docs/current-snapshot/reference/html/boot-features-caching.html#boot-features-caching-provider-caffeine
如果您在开发共享库的公司工作,或者您在开源或商业库中工作,则可能需要开发自己的自动配置。 自动配置类可以捆绑在外部jar中,仍然可以通过Spring Boot获取。 自动配置可以与“启动器”相关联,该“启动器”提供自动配置代码以及您将使用它的典型库。 我们首先介绍了构建自己的自动配置需要了解的内容,然后我们将继续介绍创建自定义启动器所需的典型步骤。 可以使用演示项目来展示如何逐步创建启动器。 4.
背景墙 我有一个环回和Angular应用程序,环回使用服务器模型和api,并使用它的sdk我们能够获得客户端服务。 现在我计划使用gulp自动执行以下构建过程。如果在模型中进行了任何更改,则运行sdk命令并重新启动服务器/其次,当对角度文件进行任何更改时,将运行sdk文件并从angular dist文件夹获取文件并重新启动服务器,最好我们可以使用浏览器的实时重新加载。 这是我尝试过的,但似乎从未奏
您的帮助应该是值得赞赏的,如果需要,我将提供代码示例。
问题内容: 有时我从那里下载python源代码,却不知道如何安装所有依赖项。如果没有文件,则必须手动创建。问题是:给定python源代码目录,是否可以从import部分自动创建? 问题答案: 如果使用虚拟环境,就可以了。 IF NOT ,pigar将是您不错的选择。 顺便说一句,我不确定它是否可以在2.6下使用。 更新 : 建议使用Pipenv或其他工具来改善您的开发流程。 对于 Python 3
有时我从下载python源代码,但不知道如何安装所有依赖项。如果没有文件,我必须手工创建它。问题是:给定python源代码目录,是否可以从import部分自动创建?
16. 自动配置 Spring Boot的自动配置机制尝试根据所添加的jar依赖来自动配置您的Spring程序。例如,如果HSQLDB在您的类路径上,而且您尚未手动配置任何数据库连接bean,那么我们会自动配置一个内存数据库。 您需要通过将@EnableAutoConfiguration或@SpringBootApplication注解添加到一个@Configuration类来激活自动配置。 应当