目前我有一个使用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) 我只是试图查看嵌入式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连接字符串是什么方式)?
有没有一种方法可以在我的bean中获取当前活动的配置文件?
谢谢
我使用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 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)
但是上述任何一个注释都不起作用,日期会像上面那样被格式化.建议欢迎!
在Spring Boot Document中,他们说'每个SpringApplication都会向JVM注册一个关闭钩子,以确保在退出时优雅地关闭ApplicationContext.
当我单击ctrl+cshell命令时,可以正常关闭应用程序.如果我在生产机器中运行应用程序,我必须使用该命令
java -jar ProApplicaton.jar.但是我无法关闭shell终端,否则会关闭进程.
如果我运行命令nohup java -jar ProApplicaton.jar &,我不能使用ctrl+c优雅地关闭它.
在生产环境中启动和停止Spring Boot应用程序的正确方法是什么?
我正在使用Spring Boot开发一个项目.我有一个接受GET请求的控制器.
目前我正在接受以下类型网址的请求:
但我想接受使用查询参数的请求:
这是我的控制器的代码:
@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) 我使用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 boot的首选部署方法是通过一个包含tomcat的可执行jar文件.
它以简单的方式开始java -jar myapp.jar.
现在,我想将该jar部署到我在EC2上的linux服务器上,我是否遗漏了某些东西或者我是否真的需要创建一个init脚本来正确启动应用程序作为守护进程?
如果我java -jar在注销时简单地调用应用程序就死了.
我可以在屏幕或nohup中启动它,但这不是很优雅,我的服务器重启将迫使我登录并手动启动该过程.
那么,春季靴子的任务是否已经存在?
我想在一个弹簧启动项目中混合使用mvc和rest.
我想在一个地方为所有其他控制器(例如example.com/api)设置基本路径(我不希望@RequestMapping('api/products')仅为每个控制器添加注释@RequestMapping('/products').
可以通过example.com/whatever访问Mvc控制器
可能吗?
(我不使用spring数据休息,只是spring mvc)
spring-boot ×10
spring ×8
java ×7
jpa ×2
linux ×2
rest ×2
spring-data ×2
spring-mvc ×2
h2 ×1
hibernate ×1
java-8 ×1
java-time ×1
json ×1