草庐IT

【Spring】Spring的Bean的生命周期

全部标签

java - 在 Spring Boot 应用程序中对 @Value 注释字段实现约束

我用@Value注释了以下字段,指定了一个默认值:@Value("${tolerance.percentage:25}")privateinttolerance;如果该Prop存在,该代码会正确地将字段的值初始化为系统属性“tolerance.percentage”。如果不存在,则默认为25。不过,我想更进一步,通过在这个int字段上强制执行最小值和最大值,因为它代表一个小于100的整数百分比,而墨菲定律意味着某人(可能是我)可以从外部错误配置属性和我的应用程序将在运行时开始做奇怪的事情,这对我来说太晚了。如果在应用程序启动时将该属性设置为“101”或“-1”,我希望抛出错误。哎呀,如

java - Spring Boot/JUnit,为多个配置文件运行所有单元测试

我有一个包含多个测试的BaseTest类。应针对我列出的每个配置文件执行每个测试。我考虑过使用参数化值,例如:@RunWith(Parameterized.class)@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)//@ActiveProfiles("h2-test")//data(){Collectionparams=newArrayList();params.add(newObject[]{"h2-test"});params.add(newObject[]{"mysql-test"

java - spring 在运行时添加数据源

我正在开发一个springbootMulti-Tenancy应用程序,每个租户策略都有一个数据库。要求是在运行时添加新数据库,这意味着我必须动态创建新的数据源对象。我还查看了Spring的AbstractRoutingDataSource,但需要预定义的数据源。所以我只想知道如何在不重新启动应用程序服务器的情况下添加/删除数据源。提前致谢。 最佳答案 我终于设法让事情顺利进行。对于有同样问题的人,只需检查thisMulti-Tenancy演示项目。 关于java-spring在运行时添加

java - Spring 覆盖 bean 配置设置其 "Primary"一个

使用Spring3.X.X我有2个用@Primary注释的服务,我创建了另一个配置类,我想在其中使用其中一个服务的“定制”版本。出于某种原因,我在调试配置类时忽略了我看到它获得了正确的依赖项,但是当我想使用它时它设置了错误的依赖项。我觉得用代码更容易解​​释,这里是一个例子:接口(interface)富:publicinterfaceFoo{StringgetMessage();}硬编码默认消息的主要实现:@Primary@Service("FooImpl")publicclassFooImplimplementsFoo{privateStringmessage="fooDefault

java - 使用@RestClientTest 对 rest 客户端进行 Spring boot 测试

我正在使用springboot1.5.8并想测试我的客户端:@ComponentpublicclassRestClientBeanimplementsRestClient{privateMaprestTemplates=newHashMap();@AutowiredpublicRestClientBean(RestTemplateBuilderbuilder,SomeConfigconf){restTemplates.put("first",builder.rootUri("first").build();restTemplates.put("second",builder.rootU

java - Spring 需要一个类型为 'AuthenticationManager' 的 bean

我一直在尝试按照发现的教程进行操作HERE用于设置演示以帮助我在另一个项目中实现之前了解本地计算机上的SSO。我遇到了一个让我陷入困境的问题。我收到错误提示我添加一个bean。请让我知道我缺少什么代码。我无法让程序运行。文件系统树AuthApplication.javapackagecom.spud.auth;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.SpringApplication;importorg.springframework.boot

java - 根据使用 spring-boot @Scheduled 注释的条件动态修改调度程序时间

我有一个调度程序,它以5秒的固定延迟触发。我计划拥有多个调度程序,但现在,我们只使用一个调度程序。要求:应根据业务条件更改调度程序的fixedDelay。**例如,**默认fixedDelay为5秒,但它可以是6、8、10秒,具体取决于条件。因此,为了实现这一点,我正在尝试修改fixedDelay。但这对我不起作用。代码:接口(interface),带有延迟方法。publicabstractclassDynamicSchedule{/***Delaysscheduler*@parammilliseconds-thetimetodelayscheduler.*/abstractvoidd

java - 访问 ID 中带有点 (.) 的 bean

在流定义中,我试图访问ID中有一个点的bean(例如:但是,它不起作用。SWF尝试寻找bean“总线”。最初,我通过使用辅助bean来加载所需的bean来克服它,但该解决方案既不优雅又不舒服。使用别名也是不可能的,因为bean是大型系统的一部分,我无法篡改它们。简而言之,没有一个解决方案允许我使用bean的原始名称直接引用它。这在当前的SWF版本中甚至可能吗? 最佳答案 我能够通过在bean名称周围使用bean访问器(@)符号和单引号来做到这一点。使用您的示例:#{@'bus.MyServiceFacade'.someAction(

java - 有人可以解释 Spring Security BasePermission.Create 吗?

我正在从事一个涉及SpringSecurityACL的项目,我遇到了创建权限BasePermission.CREATE。有人可以解释一下这应该如何工作或者它允许某人做什么吗?据我了解,每个对象都有一个acl,每个acl都有很多ace,每个ace都有一个sid和一个权限。如果必须创建对象才能将acl附加到对象,您如何授予创建对象的权限? 最佳答案 SpringSecurity通过ObjectIdentity间接授予域对象权限界面。正如您提到的,到目前为止,通常的情况是您首先创建或获取域对象,然后为域对象构造一个ObjectIdenti

java - Spring FactoryBean 和作用域协同工作

我想一起使用FactoryBeans和范围。具体来说,我希望将FactoryBean创建和返回的对象放入指定的(可能是自定义的)范围内。问题在于执行以下操作:导致FactoryBean本身被限定范围,并且对工厂创建的对象具有某种不可预测的行为。我明白这是为什么;工厂本身是一流的spring管理的bean,并且有自己的生命周期。但是,我找不到一种方法来指定从工厂返回的对象本身应该在范围内。另一方面,这正是我想要的(只要TestFactoryBean不实现FactoryBean接口(interface)):所以真正的问题是,我怎样才能使Spring像上面第二个示例一样运行,但使用真正的Fa