标签: spring-boot

在Spring Data REST中发布@OneToMany子资源关联

目前我有一个使用Spring Data REST的Spring Boot应用程序.我有一个与另一个域实体Post@OneToMany关系的域实体Comment.这些类的结构如下:

Post.java:

@Entity
public class Post {

    @Id
    @GeneratedValue
    private long id;
    private String author;
    private String content;
    private String title;

    @OneToMany
    private List<Comment> comments;

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

Comment.java:

@Entity
public class Comment {

    @Id
    @GeneratedValue
    private long id;
    private String author;
    private String content;

    @ManyToOne
    private Post post;

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

他们的Spring Data REST JPA存储库是以下基本实现CrudRepository:

PostRepository.java:

public interface PostRepository extends CrudRepository<Post, Long> …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa spring-data-rest spring-boot

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

spring boot默认H2 jdbc连接(和H2控制台)

我只是试图查看嵌入式H2数据库的H2数据库内容,当我在application.properties中没有指定任何内容并以mvn spring:run开头时,spring-boot会创建.我可以看到hibernate JPA创建表但是如果我尝试在下面的URL访问h2控制台,则数据库没有表.

http://localhost:8080/console/
Run Code Online (Sandbox Code Playgroud)

我看到这样的建议: 查看Spring启动的嵌入式H2数据库的内容

但是我不知道在spring-boot中把建议的XML放在哪里,即使我这样做了,我也不希望在配置外部数据库时h2console再次可用,所以我更有可能需要处理这个使用某种条件代码(或者只是允许弹簧在最理想的情况下自动处理它,在激活maven配置文件时我只包含H2).

有没有人有一些示例代码显示如何让H2控制台在启动时工作(以及找出spring正在使用的jdbc连接字符串是什么方式)?

java spring jpa h2 spring-boot

100
推荐指数
11
解决办法
19万
查看次数

如何使用Spring启动以编程方式确定当前活动的配置文件

有没有一种方法可以在我的bean中获取当前活动的配置文件?

谢谢

java spring spring-boot

100
推荐指数
1
解决办法
8万
查看次数

Spring boot - 不是托管类型

我使用Spring boot + JPA并在启动服务时遇到问题.

Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings
    at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)
    at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68)
    at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
Run Code Online (Sandbox Code Playgroud)

这是Application.java文件,

@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
@SpringBootApplication
public class DialerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DialerApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用UCp进行连接池,DataSource配置如下,

@Configuration
@ComponentScan
@EnableTransactionManagement
@EnableAutoConfiguration
@EnableJpaRepositories(entityManagerFactoryRef = "dialerEntityManagerFactory", transactionManagerRef = "dialerTransactionManager", basePackages = { "com.nervy.dialer.spring.jpa.repository" })
public class ApplicationDataSource { …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-mvc spring-data spring-boot

100
推荐指数
14
解决办法
19万
查看次数

Spring Boot中的JSON Java 8 LocalDateTime格式

我在Spring Boot Application中格式化Java 8 LocalDateTime时遇到了一个小问题.使用"正常"日期我没有问题,但LocalDateTime字段转换为以下内容:

"startDate" : {
    "year" : 2010,
    "month" : "JANUARY",
    "dayOfMonth" : 1,
    "dayOfWeek" : "FRIDAY",
    "dayOfYear" : 1,
    "monthValue" : 1,
    "hour" : 2,
    "minute" : 2,
    "second" : 0,
    "nano" : 0,
    "chronology" : {
      "id" : "ISO",
      "calendarType" : "iso8601"
    }
  }
Run Code Online (Sandbox Code Playgroud)

虽然我想将其转换为:

"startDate": "2015-01-01"
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
    return startDate;
}
Run Code Online (Sandbox Code Playgroud)

但是上述任何一个注释都不起作用,日期会像上面那样被格式化.建议欢迎!

java json java-8 spring-boot java-time

98
推荐指数
9
解决办法
12万
查看次数

如何以正确的方式关闭Spring Boot应用程序?

在Spring Boot Document中,他们说'每个SpringApplication都会向JVM注册一个关闭钩子,以确保在退出时优雅地关闭ApplicationContext.

当我单击ctrl+cshell命令时,可以正常关闭应用程序.如果我在生产机器中运行应用程序,我必须使用该命令 java -jar ProApplicaton.jar.但是我无法关闭shell终端,否则会关闭进程.

如果我运行命令nohup java -jar ProApplicaton.jar &,我不能使用ctrl+c优雅地关闭它.

在生产环境中启动和停止Spring Boot应用程序的正确方法是什么?

linux spring spring-boot

97
推荐指数
10
解决办法
13万
查看次数

如何在Spring Boot中检索查询参数?

我正在使用Spring Boot开发一个项目.我有一个接受GET请求的控制器.

目前我正在接受以下类型网址的请求:

HTTP://本地主机:8888 /用户/数据/ 002

但我想接受使用查询参数的请求:

HTTP://本地主机:8888 /用户数据= 002

这是我的控制器的代码:

@RequestMapping(value="/data/{itemid}", method = RequestMethod.GET)
public @ResponseBody
item getitem(@PathVariable("itemid") String itemid) {   
    item i = itemDao.findOne(itemid);              
    String itemname = i.getItemname();
    String price = i.getPrice();
    return i;
}
Run Code Online (Sandbox Code Playgroud)

java rest spring-boot

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

在Spring Boot中禁用所有与数据库相关的自动配置

我使用Spring Boot开发两个应用程序,一个用作服务器,另一个用作客户端应用程序.但是,它们都是相同的应用程序,根据活动配置文件的功能不同.我正在使用Spring Boot的自动配置功能来配置我的应用程序.

我想在客户端应用程序上禁用所有与数据库相关的自动配置,因为它不需要数据库连接.应用程序不应尝试与数据库建立连接,也不应尝试使用任何Spring Data或Hibernate功能.启用或禁用数据库自​​动配置应该是有条件的,并且基于应用程序的活动配置文件.

我可以通过为各个配置文件创建两个不同的application.properties文件来实现此目的吗?

我尝试将其添加到我的属性文件中,

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration\
  org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration\
  org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration
Run Code Online (Sandbox Code Playgroud)

但是,应用程序仍然尝试在启动时连接到数据库.这些排除是否足以满足我的要求?

spring hibernate spring-data spring-data-jpa spring-boot

95
推荐指数
7
解决办法
11万
查看次数

如何在生产环境中运行spring boot可执行jar?

Spring boot的首选部署方法是通过一个包含tomcat的可执行jar文件.

它以简单的方式开始java -jar myapp.jar.

现在,我想将该jar部署到我在EC2上的linux服务器上,我是否遗漏了某些东西或者我是否真的需要创建一个init脚本来正确启动应用程序作为守护进程?

如果我java -jar在注销时简单地调用应用程序就死了.

我可以在屏幕或nohup中启动它,但这不是很优雅,我的服务器重启将迫使我登录并手动启动该过程.

那么,春季靴子的任务是否已经存在?

java linux spring spring-boot

93
推荐指数
3
解决办法
10万
查看次数

如何在春季启动时设置基本网址?

我想在一个弹簧启动项目中混合使用mvc和rest.

我想在一个地方为所有其他控制器(例如example.com/api)设置基本路径(我不希望@RequestMapping('api/products')仅为每个控制器添加注释@RequestMapping('/products').

可以通过example.com/whatever访问Mvc控制器

可能吗?

(我不使用spring数据休息,只是spring mvc)

java rest spring spring-mvc spring-boot

93
推荐指数
12
解决办法
14万
查看次数