我有一个Spring 3.1 @Configuration需要一个属性foo来构建一个bean.属性是在属性中定义的,defaults.properties但overrides.properties如果应用程序具有活动的overrideSpring配置文件,则可以由属性覆盖.
没有覆盖,代码看起来像这样,并且工作......
@Configuration
@PropertySource("classpath:defaults.properties")
public class MyConfiguration {
@Autowired
private Environment environment;
@Bean
public Bean bean() {
...
// this.environment.getRequiredProperty("foo");
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想一个@PropertySource用于classpath:overrides.properties对队伍@Profile("overrides").有没有人对如何实现这一点有任何想法?我考虑过的一些选项是重复的@Configuration,但这会违反DRY或程序化操作ConfigurableEnvironment,但我不确定environment.getPropertySources.addFirst()调用的去向.
如果我直接注入属性@Value,但是在我使用Environment和getRequiredProperty()方法时,将以下内容放在XML配置中.
<context:property-placeholder ignore-unresolvable="true" location="classpath:defaults.properties"/>
<beans profile="overrides">
<context:property-placeholder ignore-unresolvable="true" order="0"
location="classpath:overrides.properties"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
更新
如果您现在尝试执行此操作,请查看Spring Boot的YAML支持,尤其是"使用YAML而不是属性"部分.那里的配置文件支持会使这个问题没有实际意义,但还没有@PropertySource支持.
在" 入门"页面中,我们承诺来自Flickr的小猫善良.根据说明将延伸放在一起,没有小猫的善良实现.相反,弹出窗口显示一个小的空白矩形条,没有任何模糊或可爱的东西.
为什么?
(我问这个问题是为了回答它,因为我找不到任何其他报道错误的方法.)
我有以下格式的传入 JSON 数据
{
"header": {
"schema_id": {
"namespace": "omh",
"name": "physical-activity",
},
},
"body": {
"activity_name": "walking",
"distance": {
"value": 1.5,
"unit": "mi"
},
}
}
Run Code Online (Sandbox Code Playgroud)
和相应的 Java 类,看起来像
public class DataPoint<T extends Measure> {
private DataPointHeader header;
private T body;
Run Code Online (Sandbox Code Playgroud)
和
@JsonNaming(LowerCaseWithUnderscoresStrategy.class)
public class PhysicalActivity extends Measure {
private String activityName;
private LengthUnitValue distance;
Run Code Online (Sandbox Code Playgroud)
我希望杰克逊根据JSON 文档中body的PhysicalActivity类型解析为类型schema_id,例如在伪代码中
if schema_id.namespace == 'omh' && schema_id.name == 'physical-activity'
then return PhysicalActivity.class
Run Code Online (Sandbox Code Playgroud)
我试过这样做,@JsonTypeIdResolver但如果我尝试导航到header.schema_id.namewith …
(我问这个问题的目的是为了回答它。几个月前我在 Spring 论坛上问过这个问题,不久后我通过实验找到了解决方案。但我将其发布在这里,以防其他人点击同样的场景,因为我被告知这样做。)
我有一个 Spring MVC 端点/work,其处理是 IO 绑定的,可能需要几秒钟才能完成。进入Servlet 3异步请求和Spring MVC异步请求处理。我可以返回一个Callable<Foo>orDeferredResult<Foo>并释放我的 servlet 容器线程,以便在处理发生时执行一些有用的操作。
现在其他用户很可能会提出相同的请求。重复已完成的工作是没有意义的,因此我将在第一次完成时缓存工作结果,并希望返回该缓存结果。因此现在,完全相同的处理程序方法可能需要几秒钟或几毫秒才能完成。
我的问题是我只能给处理程序方法一个签名,并且我将其定义为 returns Callable<Foo>。我不知道如何消除短请求的开销;按照目前的情况,我将创建一个Callable<Foo>,将其排入长时间运行的任务后面,并等待线程池中的线程来处理它,所有这些都是为了最终提供我已经掌握的响应。我想避免这一切。
如果我使用 aDeferredResult<Foo>而不是 a Callable<Foo>,性能会更好一些,但我已经将处理从 Spring 托管线程中取出,丢失了 Spring Security 的 SecurityContext,并且用 Spring 特定的DeferredResult.
是否有一种有效的方法有时可以异步提供响应,有时可以从同一 MVC 处理程序方法同步提供响应?
我想实现一个@ExceptionHandler可以防止所有未捕获的异常到达客户端。像这样的东西...
@ControllerAdvice
public class ExceptionHandlingControllerAdvice {
private static final Logger logger = getLogger(ExceptionHandlingControllerAdvice.class);
@ExceptionHandler(Exception.class)
@ResponseStatus(value = INTERNAL_SERVER_ERROR)
public void handleAnyUncaughtException(Exception e) {
logger.error("This uncaught exception is being blocked from reaching the client.", e);
}
}
Run Code Online (Sandbox Code Playgroud)
但这妨碍了开箱即用的异常处理DefaultHandlerExceptionResolver,例如,在@RequestBody检查失败的验证时抛出 4xx 错误@Valid。@ExceptionHandler在DHER可以尝试返回 4xx之前,似乎优先并返回 500 。
有没有办法阻止未捕获的异常到达客户端,但仍然让客户端DefaultHandlerExceptionResolver完成它的工作?
MongoDB 文档建议从ObjectId中提取插入时间,而不是使用单独的时间字段.有谁知道如何使用Spring Data MongoDB执行此操作?
特别是,我想查询在特定日期范围内插入的文档.
TypeSafe Slick是否适用于Scala 2.9.3?我明白了
[ERROR] exception when typing query.list
exception when typing query.listscala.tools.nsc.symtab.Types$TypeError: class file needed by StatementInvoker is missing.
[INFO] class file needed by StatementInvoker is missing.
[INFO] reference type Either of object package refers to nonexisting symbol.
Run Code Online (Sandbox Code Playgroud)
当我使用Scala 2.10.x时它会消失,但我对Scala来说太新了解了解原因.
import slick.session.Database
import scala.slick.jdbc.StaticQuery
import Database.threadLocalSession
import com.typesafe.config.ConfigFactory
object PostgresDao {
protected val conf = ConfigFactory.load
def findFoo(a: Int, b: String): Option[Int] = {
Database.forURL("jdbc:postgresql://localhost/bar", driver = "org.postgresql.Driver") withSession {
val query = StaticQuery.query[(Int, String), Int](
"""
select some_int
from …Run Code Online (Sandbox Code Playgroud) spring ×2
spring-mvc ×2
jackson ×1
java ×1
json ×1
mongodb ×1
scala ×1
slick ×1
spring-data ×1