社区网站建设,创新创业网站建设,国外设计网站pinterest极速版,河南省建设工程信息网招标公告spring 配置只读事务我们之前的设置可以正常工作。 我们现在要做的是进一步发展#xff0c;并配置两个单独的实体管理器#xff0c;而不会影响我们之前实现的功能。 第一步是将默认实体管理器配置设置为主要配置。 这是第一步 package com.gkatzioura.springdatareadreplic… spring 配置只读事务 我们之前的设置可以正常工作。 我们现在要做的是进一步发展并配置两个单独的实体管理器而不会影响我们之前实现的功能。 第一步是将默认实体管理器配置设置为主要配置。 这是第一步 package com.gkatzioura.springdatareadreplica.config; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; Configuration public class PrimaryEntityManagerConfiguration { Value ( ${spring.datasource.username} ) private String username; Value ( ${spring.datasource.password} ) private String password; Value ( ${spring.datasource.url} ) private String url; Bean Primary public DataSource dataSource() throws Exception { return DataSourceBuilder.create() .url(url) .username(username) .password(password) .driverClassName( org.postgresql.Driver ) .build(); } Bean Primary public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder, Qualifier ( dataSource ) DataSource dataSource) { return builder.dataSource(dataSource) .packages( com.gkatzioura.springdatareadreplica ) .persistenceUnit( main ) .build(); } } 如果您使用此配置运行您的应用程序它将像之前的应用程序一样运行。 现在是时候配置只读实体管理器了。 package com.gkatzioura.springdatareadreplica.config; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; Configuration public class ReadOnlyEntityManagerConfiguration { Value ( ${spring.datasource.username} ) private String username; Value ( ${spring.datasource.password} ) private String password; Value ( ${spring.datasource.readUrl} ) private String readUrl; Bean public DataSource readDataSource() throws Exception { return DataSourceBuilder.create() .url(readUrl) .username(username) .password(password) .driverClassName( org.postgresql.Driver ) .build(); } Bean public LocalContainerEntityManagerFactoryBean readEntityManagerFactory( EntityManagerFactoryBuilder builder, Qualifier ( readDataSource ) DataSource dataSource) { return builder.dataSource(dataSource) .packages( com.gkatzioura.springdatareadreplica ) .persistenceUnit( read ) .build(); } } 另外我将向控制器添加方法以保存模型。 package com.gkatzioura.springdatareadreplica.controller; import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import com.gkatzioura.springdatareadreplica.entity.Employee; import com.gkatzioura.springdatareadreplica.repository.EmployeeRepository; RestController public class EmployeeContoller { private final EmployeeRepository employeeRepository; public EmployeeContoller(EmployeeRepository employeeRepository) { this .employeeRepository employeeRepository; } GetMapping ( /employee ) public ListEmployee getEmployees() { return employeeRepository.findAll(); } PostMapping ( /employee ) ResponseStatus (HttpStatus.CREATED) ResponseStatus (HttpStatus.CREATED) public void addEmployee( RequestBody Employee employee) { employeeRepository.save(employee); } } 如果您确实尝试使用控制器添加员工然后查询读取的数据库您将看到根本没有添加任何条目。 因此我们已启动并运行了主要的实体管理器而我们还拥有了辅助的实体管理器。 第二个尚未使用。 下一个博客着重介绍使用辅助只读实体管理器。 翻译自: https://www.javacodegeeks.com/2019/10/read-replicas-and-spring-data-configuring-two-entity-managers.htmlspring 配置只读事务