求解:我想知道spring boot的controller类是怎么指定https://www.198bona.com跳转到HTML页面的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解:我想知道spring boot的controller类是怎么指定https://www.198bona.com跳转到HTML页面的?相关的知识,希望对你有一定的参考价值。

spring boot的controller类是怎么指定https://www.198bona.com跳转到html页面的?

html静态文件放在static下,用@Controller注解,以下第一种方式成功,第二种方式失败。

一、

@Controller
@RequestMapping("/")
public class IndexController
public ModelAndView index()
return new ModelAndView("index");



二、

@Controller
public class IndexController

@RequestMapping("/")
public ModelAndView index()
return new ModelAndView("index");

参考技术A 域名直接跳到项目里??

Spring Boot + Hibernate JPA 配置使用 EntityManager

【中文标题】Spring Boot + Hibernate JPA 配置使用 EntityManager【英文标题】:Spring Boot + Hibernate JPA configuration to use EntityManager 【发布时间】:2020-03-16 16:37:21 【问题描述】:

首先我想写: 我知道为 Spring Boot 配置 Hibernate JPA 并不是一个好主意,也知道如何说“它很愚蠢”,因为 Spring Boot 为您提供了自动配置等。 好的,我知道,但我正在自学 Spring 和 Hibernate,我想逐步配置 Hibernate 并注入 Spring Context。 所以,我的问题是,我配置 Hibernate 并将类写入配置,它使用“persitence.xml”。 @PersistenceContext 的配置正常,EntityManager 工作正常。但是如果 @Entity 不包含在“persistence.xml”文件中,则不会将其添加到 Hibernate 上下文中。

build.gradle 是用于 jar 文件的,这就是问题所在?

plugins 
    id 'org.springframework.boot' version '2.1.9.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'


group = 'com.kamil'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'

repositories 
    mavenCentral()


dependencies 
    implementation 'org.springframework.boot:spring-boot-starter'
    compile("org.springframework.boot:spring-boot-starter-web")
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.2.0.RELEASE'
/*  compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.6.Final'
    compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.4.8.Final'*/
    compile("com.h2database:h2")

    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.18'

JPA 的配置类:

@Configuration
@EnableJpaRepositories
@EnableTransactionManagement
public class HibernateConfiguration 

    @Bean(name = "entityManagerFactory")
    public LocalEntityManagerFactoryBean entityManagerFactoryBean()
        LocalEntityManagerFactoryBean factoryBean = new LocalEntityManagerFactoryBean();
        factoryBean.setPersistenceUnitName("MySQL");
        return factoryBean;
    

    @Bean(name = "transactionManager")
    public JpaTransactionManager JpaTransactionManagerBean()
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());
        System.out.println("EMF "+entityManagerFactoryBean().getObject().toString());
        return transactionManager;
    


当我在“persistence.xml”文件中时,实体就可以了。但如果没有“未知实体”正在抛出。 是否可以避免在“persistence.xml”中使用该应用程序配置中的实体注释?这意味着 Spring Boot jar + Hibernate JPA ?

我知道那是 Spring Boot 中的 Spring Data JPA,但如果我以这种形式进行配置,我会看到 JPA 的更多详细信息。我使用 SpringBoot、Spring Framework 和 Hibernate 文档。

感谢您的回复。如果我理解错了,请纠正我。

【问题讨论】:

您的意思是要扫描包含实体的包吗? LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean(); factoryBean.setPackagesToScan("com.abc.data"); ? 但我使用的是 LocalEntityManagerFactoryBean。而且那个对象没有它的方法。我应该将配置更改为您描述的那个吗? 是的,如果你想使用扫描。在LocalContainerEntityManagerFactoryBean 文档中阅读更多内容。 好的。所以我在这种情况下 jar Spring Boot 是不是避免在 persistence.xml 中类的任何选项? 你可以试试这个:<property name="hibernate.archive.autodetection" value="class"/> 输入你的persistence.xml,见***.com/questions/1780341/… 【参考方案1】:

添加我的 cmets 作为答案,如果有帮助,请告诉我:

来自 LocalContainerEntityManagerFactoryBean 文档:

与 LocalEntityManagerFactoryBean 一样,配置设置是 通常从 META-INF/persistence.xml 配置文件中读取,驻留在 在类路径中,按照一般的JPA配置 合同。但是,这个 FactoryBean 更灵活,您可以 覆盖 persistence.xml 文件的位置,指定 JDBC 要链接到的数据源等。

不使用 LocalEntityManagerFactoryBean ,您可以这样做:

LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setPackagesToScan("pkg.containing.entities");

如果你想继续使用persistence.xmlLocalEntityManagerFactoryBean,你可以通过在你的persistence.xml 文件中添加以下内容来尝试Hibernate 自动检测功能

<property name="hibernate.archive.autodetection" value="class"/>

请参阅this 了解更多关于如何为这种情况设置persistence.xml 的信息。

【讨论】:

感谢您的回答。 Previosu 我在*** 上找到了以下信息: 但它对我的问题没有帮助。仍然是“未知实体”。我找到了一篇文章(可在链接boraji.com/spring-4-hibernate-5-jpa-2-integration-example 上找到)。并且在配置persistence.xml 中没有“hibernate.archive.autodetection”,而只有@ComponentScans。我也试过这个,但仍然是“未知实体”。只有添加到 persistence.xml 才能解决我的问题。我在想我可能在某些地方有错误的配置。 在 LocalContainerEntityManagerFactoryBean 中总是要放 setPackagesToScan() 吗?是否有自动检测 Spring + Hibernate JPA @Entity 类的选项?在我的 LocalEntityManagerFactoryBean 的情况下, 不起作用。我仍然必须手动将 放到 persistence.xml 中? @kamilguti,我今天会检查一下。您可以发布您的 persistence.xml 和依赖项以防万一吗? 今天我看到了你的评论,好的,我用相同的配置做了公共回购。你能在github上查一下吗? github.com/kamilall234/Service 你检查了吗?我仍然有麻烦。我的依赖项在 github 上那个简单的项目中。我仍在考虑 @Entity 注释的自动检测。如果 未添加到 persistence.xml,为什么 EntityManager 看不到该实体?即使是 .xml 中的“hibernate.archive.autodetection”。我知道 xml 不是最好的解决方案。今天我将尝试使用 JPA 的 LocalEntityContainerManagerFactoryBean 类。还有一个问题,如果我想定制 SpringBoot,我应该在 Spring Boot doc 中寻找还是在 Spring Framework 中寻找更好?

以上是关于求解:我想知道spring boot的controller类是怎么指定https://www.198bona.com跳转到HTML页面的?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 和 Html:请求的资源上不存在“Access-Control-Allow-Origin”标头

Spring security3.1.x session问题,求解

spring boot + gradle + mybatis

Spring Boot 默认异常映射到标准 HTTP 状态码

Spring Boot Initializr:Maven 项目还是 Maven POM?

Spring Boot Raw WebSocket 设置主体