小编Mic*_*hal的帖子

spring 自定义平台事务管理器

我正在尝试在 Spring Boot 应用程序中实现自定义事务缓存。我已经创建了自己的 AbstractPlatformTransactionManager 实现和一些单元测试,它们显示事务按预期工作。然而,真正的应用程序忽略了我的事务管理器——它的方法永远不会被调用。我做错了什么?谢谢你。

事务管理器实现:

@Component
public class CacheTransactionManager extends AbstractPlatformTransactionManager{
    @Override
    protected Object doGetTransaction() throws TransactionException {
    ...
    }
...
}
Run Code Online (Sandbox Code Playgroud)

缓存事务配置:

@Configuration
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
public class CacheTransactionConfiguration {

    @Bean(name = "cacheTransactionManager")
    public PlatformTransactionManager cacheTransactionManager() {
        return new CacheTransactionManager();
    }  
Run Code Online (Sandbox Code Playgroud)

}

自定义事务注释(我也试过没有这个,但没有区别):

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(value = "cacheTransactionManager", rollbackFor = Exception.class)
public @interface CacheTransactional {

}
Run Code Online (Sandbox Code Playgroud)

缓存服务:

@Component
public class CacheService {
    @CacheTransactional
    public void add(Object o){
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

工作 JUnit 测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = …
Run Code Online (Sandbox Code Playgroud)

spring transactions

6
推荐指数
1
解决办法
5034
查看次数

lambda用于接口实现时,“无效的lambda反序列化”

我有一个带有lambda表达式的检票口项目。在用户单击后退按钮的一页上,我的应用程序崩溃:

java.lang.IllegalArgumentException: Invalid lambda deserialization
at x.y.z.MyPage$3.$deserializeLambda$(MyPage.java:1)
Run Code Online (Sandbox Code Playgroud)

在页面类(我返回的地方)中,我使用lambda表达式实现此接口:

public interface Localizator extends Serializable {
    String getLocalizedString(String key);
}
Run Code Online (Sandbox Code Playgroud)

和lambda:

protected void someMethod() {
    localize((String key) -> getString(key));
}
Run Code Online (Sandbox Code Playgroud)

当我将lambda更改为匿名类时,一切正常。在这种情况下应如何使用lambda?

信封:Java 1.8.0_25,Netbeans 8.0.2,Wicket 6.17.0。

编辑:这是带有lambda的真实(但简化)方法:

@Override
protected DataLoader createDataLoader() {

    return new DataLoader(){

        @Override
        public List loadData() {
            ...
        }

        @Override
        public List convertToTableRows(List data) {
            return Converter.asRowList(
                data, 
                (Record record) -> {...}, // this lambda is OK
                (String key) -> getString(key)); // this lambda is crashing
        }

        @Override
        public List …
Run Code Online (Sandbox Code Playgroud)

lambda wicket java-8

1
推荐指数
1
解决办法
2815
查看次数

Flyway无法在Amazon Elasticbeanstalk上运行

我在amazon elasticbeanstalk上测试我的弹簧启动应用程序,它不和flyway一起工作.当我在本地tomcat上部署应用程序(或使用spring boot运行)时,一切正常.此外,当我禁用flyway(属性flyway.enabled = false)时,应用程序正在处理aws.
但是,启用flyway后,应用程序部署失败,并出现以下异常:

2016-12-30 09:52:12.036 DEBUG 10656 --- [ost-startStop-1] o.f.core.internal.command.DbSchemas      : Schema `ebdb` already exists. Skipping schema creation.
2016-12-30 09:52:12.056  WARN 10656 --- [ost-startStop-1] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to check whether schema `ebdb` is empty
2016-12-30 09:52:12.074  WARN 10656 --- [ost-startStop-1] o.s.boot.SpringApplication               : Error handling failed (Error …
Run Code Online (Sandbox Code Playgroud)

mysql-connector flyway spring-boot amazon-elastic-beanstalk

1
推荐指数
1
解决办法
682
查看次数