小编bur*_*ete的帖子

Spring 3.1或更高版本@RequestMapping使用/生产

我有一个关于消费的问题,并产生了一部分@RequestMapping.我有一个端点,我想接受JSON和XML,并在传入JSON时返回JSON,并在传入XML时返回XML.我需要做些什么才能使其工作?

示例代码如下所示.

@RequestMapping(value = "/something", method = PUT, 
                consumes = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE}, 
                produces = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE})
public SomeObject updateSomeObject(SomeObject acct) {
    return doStuff(acct);
}
Run Code Online (Sandbox Code Playgroud)

这会以我期望的方式工作还是我需要两个端点updateSomeObjectXMLupdateSomeObjectJson处理这两种情况?

谢谢,迈克

java rest spring spring-mvc media-type

22
推荐指数
2
解决办法
8万
查看次数

Spring-boot数据源提交麻烦

我的应用程序使用Spring-Boot 1.4.1.RELEASE,我的数据源配置如下;

spring:
  datasource:
    url: ***
    username: ***
    password: ***
    driver-class-name: oracle.jdbc.driver.OracleDriver
    initial-size: 1
    max-active: 100
    max-idle: 30
    min-idle: 1
    max-wait: 0
    pool-prepared-statements: true
    max-open-prepared-statements: 3
Run Code Online (Sandbox Code Playgroud)

问题是我的集成测试的最后一种情况,如果它包含一个@Sql设置逻辑,则无法提交最后一次设置SQL.由于案例的重新排序,很少发生这种麻烦,而且只有少数案例需要设置逻辑来准备DB.没有配置,只有OracleDB的配置,而且在ConfigClass.

@SpringBootTest(classes = ConfigClass.class)
public class EtcTest {

    @After
    public void teardown() {
        // teardwon X, Y, & Z
    }

    @Test
    @Sql("setupX.sql")
    @Sql("setupY.sql")
    @Sql("setupZ.sql")
    public void get_fromDb() {
        List<Etc> list = buildExpectedList();
        Obj expected = buildExpected();
        Obj actual = getCallToAPI();

        assertThat(rs.getX()).isEqualTo(expected.getX());
        assertThat(rs.getY()).isEqualTo(expected.getY());
        assertThat(rs.getZ()).containsAll(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,在上述情况下,如果它是最后一个集成的情况,它无法提交@Sql注释中的最后一个SQL ,即SetupZ.sql …

java datasource spring-boot

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

JPA找到最后一个条目

我想知道用JPA获取表的最后一个条目的最佳方法是什么.在Sql中,我正在寻找的是:

select id from table order by id desc limit 1 
Run Code Online (Sandbox Code Playgroud)

我在考虑model.count(),但这听起来更像是一个黑客而不是一个好的解决方案;)

java sql jpa

18
推荐指数
3
解决办法
4万
查看次数

如何判断XML元素是否在XSD文件中标记为必需

我需要在XSD架构中将某些元素标记为非必需元素.我如何确定哪些元素被标记为必需,是否有任何特定的标志我应该搜索.目前我的所有元素都标有minOccurs="0",这是需要改变的吗?

schema xsd

17
推荐指数
1
解决办法
2万
查看次数

JPA/@PostPersist @PostUpdate - 交易

目前与我的工作@PostPersist@PostUpdate,而在这些触发器我坚持附加实体.问题是,这些触发器是否在同一个交易中,如果不是,是否可以强行执行?

对我而言,它就是这样的.当我查看日志时,事务不存在(它在触发器启动之前提交),这阻止了我(没有REQUIRES_NEW 注入bean的持久方法)保存数据库中的其他实体. REQUIRED属性完全被忽略,MANDATORY属性不会抛出异常.

可能是JUnit的问题(因为我处于开发阶段并且没有测试完整环境中的行为)?

如果无法在此触发器上扩展事务,如何确保如果在@PostPersist和之前发生回滚@PostUpdate,那么这些操作也将被回滚.

java jpa transactions

17
推荐指数
2
解决办法
2万
查看次数

如何自动生成创建或修改的时间戳字段?

我的实体类:

@Entity
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "USER_ID_GENERATOR", sequenceName = "USER_SEQ")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_ID_GENERATOR")
    @Column(name = "user_id")
    private long userId;


    @Temporal(TemporalType.DATE)
    private Date created;

    @Temporal(TemporalType.DATE)
    private Date modified;

    //setters and getters...
}
Run Code Online (Sandbox Code Playgroud)

我想在创建或修改对象时自动将CREATED和MODIFIED字段相互补充.CREATED和MODIFIED字段应为TIMESTAMP类型.

我如何实现这一目标?

orm hibernate jpa

16
推荐指数
5
解决办法
3万
查看次数

JAXB XMLAdapter方法不会抛出异常

我正在使用JAXB XMLadapter来编组和解组布尔值.应用程序的XML文件也将由C#应用程序访问.我们必须验证此XML文件,这是使用XSD完成的.C#应用程序为布尔节点写入"True"值.但是我们的XSD也证实了这一点,因为它只允许"真/假"或"1/0".因此,我们在XSD中保留了String的布尔值,并且该字符串将由XMLAdapter验证,以便我们编组和解组.XML Adapter如下:

public class BooleanAdapter extends XmlAdapter<String, Boolean> {

    @Override
    public Boolean unmarshal(String v) throws Exception {

        if(v.equalsIgnoreCase("true") || v.equals("1")) {
            return true;
        } else if(v.equalsIgnoreCase("false") || v.equals("0")) {
            return false;
        } else {
            throw new Exception("Boolean Value from XML File is Wrong.");
        }
    }

    @Override
    public String marshal(Boolean v) throws Exception {
        return v.toString();        
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在正常情况下工作,但是当从xml文件中读取无效数据(例如:"abcd"或"")时,则抛出"new new Exception();" 没有传播,Unmarshal进程继续读取下一个节点.我希望应用程序在抛出异常后立即停止.看来我的异常被吃光了.任何帮助深表感谢.

如何解决这个问题?

java jaxb unmarshalling xmladapter

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

Hibernate Annotations:没有实体的默认构造函数

我试图坚持JAXB生成的对象.以下是示例结构:

@Column(name = "reporting_identifier")
private String reportingIdentifier;
@Column(name = "apply_quiet_time")
private boolean applyQuietTime;
@Embedded
private RecipientDetailsList recipientDetailsList;
Run Code Online (Sandbox Code Playgroud)

以下是RecipientDetailsList课程结构:

@ElementCollection(targetClass=String.class)
private List<RecipientDetails> recipientDetails;
Run Code Online (Sandbox Code Playgroud)

现在,RecipientDetails该类有一个参数构造函数,它接受一个String.我希望将字符串作为整个记录的一部分保存在数据库中.我看到了

org.hibernate.InstantiationException:没有实体的默认构造函数:RecipientDetailsList

我尝试保存对象时出现异常.我有两个问题:

  1. 我们有关于此例外的任何工作吗?我无法更改类,因为它是为JAXB编组/ unmarhsalling而设计的.我可以以某种方式存储对象而不改变结构吗?此外,我感兴趣的是只存储recipientDetails引用的列表的第一条记录,因为我只想要一行对象.如果它有超过1条记录,我希望它忽略其余的记录.可能吗?

  2. 这个好的设计是否可以直接将注释用于由JAXB生成的类中?我应该创建另一个类(可能还有mappers /转换器)来存储和检索信息吗?

java annotations hibernate

16
推荐指数
1
解决办法
4万
查看次数

如何在Spring中缩小动态HTML响应?

按照Google的pagespeed建议,我想缩小我的Spring应用程序的HTML响应.我不是指GZip,我的意思是在HTML发送之前从HTML中删除注释和空格.

我想动态地这样做,而不是在我的模板中.我的模板包含许多有用的注释,但不应该是响应的一部分.

这是我的控制器.谢谢

@Controller
public class IndexController {

    @GetMapping("/")
    public ModelAndView index() {
        Data data = ....
        return new ModelAndView("index", data);
    }
}
Run Code Online (Sandbox Code Playgroud)

html java spring minify spring-boot

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

SonarQube为lambda用法提供未使用的私有方法问题

我有以下逻辑;

..
if(list.stream()
       .filter(MyClass::isEnabled)
       .filter(this::isActive)
       .count() > 0) {
    //do smth
}
..
private boolean isActive(MyClass obj) {
    return bool;
}
Run Code Online (Sandbox Code Playgroud)

如你所见,isActive方法正在流结构中使用,但是当我在Jenkins上构建这个类时,我从SonarQube获得了未使用的私有方法问题,它说你应该删除这个冗余的私有方法.这是一个错误吗?如果没有,为什么他们的分析结构中仍然没有包含lambda逻辑?

显然,只有解决方案才能做到这一点;

.filter(obj -> isActive(obj)),但它破坏了均匀性,甚至可读性(imo).

java lambda sonarqube

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