JAVA-8294 : Split or move spring-data-rest module
This commit is contained in:
		
							parent
							
								
									caa13dd4d1
								
							
						
					
					
						commit
						0a7a758979
					
				
							
								
								
									
										20
									
								
								spring-data-rest-1/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								spring-data-rest-1/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| ## Spring Data REST | ||||
| 
 | ||||
| This module contains articles about Spring Data REST | ||||
| 
 | ||||
| ### Relevant Articles: | ||||
| - [Guide to Spring Data REST Validators](https://www.baeldung.com/spring-data-rest-validators) | ||||
| - [Spring Data Web Support](https://www.baeldung.com/spring-data-web-support) | ||||
| - [Spring REST and HAL Browser](https://www.baeldung.com/spring-rest-hal) | ||||
| 
 | ||||
| ### The Course | ||||
| The "REST With Spring" Classes: http://bit.ly/restwithspring | ||||
| 
 | ||||
| # Running the project | ||||
| The application uses [Spring Boot](http://projects.spring.io/spring-boot/), so it is easy to run. You can start it any of a few ways: | ||||
| * Run the `main` method from `SpringDataRestApplication` | ||||
| * Use the Maven Spring Boot plugin: `mvn spring-boot:run` | ||||
| * Package the application as a JAR and run it using `java -jar intro-spring-data-rest-1.jar` | ||||
| 
 | ||||
| # Viewing the running application | ||||
| To view the running application, visit [http://localhost:8080](http://localhost:8080) in your browser | ||||
							
								
								
									
										100
									
								
								spring-data-rest-1/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								spring-data-rest-1/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,100 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
|     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <artifactId>spring-data-rest-1</artifactId> | ||||
|     <version>1.0</version> | ||||
|     <name>spring-data-rest-1</name> | ||||
|     <packaging>jar</packaging> | ||||
|     <description>Intro to Spring Data REST</description> | ||||
| 
 | ||||
|     <parent> | ||||
|         <groupId>com.baeldung</groupId> | ||||
|         <artifactId>parent-boot-2</artifactId> | ||||
|         <version>0.0.1-SNAPSHOT</version> | ||||
|         <relativePath>../parent-boot-2</relativePath> | ||||
|     </parent> | ||||
| 
 | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-web</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-rest</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.data</groupId> | ||||
|             <artifactId>spring-data-rest-hal-explorer</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-validation</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-autoconfigure</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.h2database</groupId> | ||||
|             <artifactId>h2</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.querydsl</groupId> | ||||
|             <artifactId>querydsl-apt</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.querydsl</groupId> | ||||
|             <artifactId>querydsl-jpa</artifactId> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <build> | ||||
|         <finalName>${project.artifactId}</finalName> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>com.mysema.maven</groupId> | ||||
|                 <artifactId>maven-apt-plugin</artifactId> | ||||
|                 <version>${maven.version}</version> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <phase>generate-sources</phase> | ||||
|                         <goals> | ||||
|                             <goal>process</goal> | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <outputDirectory>target/generated-sources</outputDirectory> | ||||
|                             <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|             <plugin> | ||||
|                 <groupId>org.springframework.boot</groupId> | ||||
|                 <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
| 
 | ||||
|     <properties> | ||||
|         <start-class>com.baeldung.books.SpringDataRestApplication</start-class> | ||||
|         <maven.version>1.0</maven.version> | ||||
|     </properties> | ||||
| 
 | ||||
| </project> | ||||
| @ -0,0 +1,13 @@ | ||||
| package com.baeldung.books; | ||||
| 
 | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| public class SpringDataRestApplication { | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         SpringApplication.run(SpringDataRestApplication.class, args); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,65 @@ | ||||
| package com.baeldung.books.config; | ||||
| 
 | ||||
| import java.util.Properties; | ||||
| 
 | ||||
| import javax.sql.DataSource; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| import org.springframework.context.annotation.PropertySource; | ||||
| import org.springframework.core.env.Environment; | ||||
| import org.springframework.data.jpa.repository.config.EnableJpaRepositories; | ||||
| import org.springframework.jdbc.datasource.DriverManagerDataSource; | ||||
| import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; | ||||
| import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | ||||
| 
 | ||||
| @Configuration | ||||
| @EnableJpaRepositories(basePackages = "com.baeldung.books.repositories") | ||||
| public class DbConfig { | ||||
| 
 | ||||
| 	@Autowired | ||||
| 	private Environment env; | ||||
| 
 | ||||
| 	@Bean | ||||
| 	public DataSource dataSource() { | ||||
| 		final DriverManagerDataSource dataSource = new DriverManagerDataSource(); | ||||
| 		dataSource.setDriverClassName(env.getProperty("driverClassName")); | ||||
| 		dataSource.setUrl(env.getProperty("url")); | ||||
| 		dataSource.setUsername(env.getProperty("user")); | ||||
| 		dataSource.setPassword(env.getProperty("password")); | ||||
| 		return dataSource; | ||||
| 	} | ||||
| 
 | ||||
| 	@Bean | ||||
| 	public LocalContainerEntityManagerFactoryBean entityManagerFactory() { | ||||
| 		final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); | ||||
| 		em.setDataSource(dataSource()); | ||||
| 		em.setPackagesToScan(new String[] { "com.baeldung.books.models" }); | ||||
| 		em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); | ||||
| 		em.setJpaProperties(additionalProperties()); | ||||
| 		return em; | ||||
| 	} | ||||
| 
 | ||||
| 	final Properties additionalProperties() { | ||||
| 		final Properties hibernateProperties = new Properties(); | ||||
| 		if (env.getProperty("hibernate.hbm2ddl.auto") != null) { | ||||
| 			hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); | ||||
| 		} | ||||
| 		if (env.getProperty("hibernate.dialect") != null) { | ||||
| 			hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); | ||||
| 		} | ||||
| 		if (env.getProperty("hibernate.show_sql") != null) { | ||||
| 			hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); | ||||
| 		} | ||||
| 		return hibernateProperties; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| @Configuration | ||||
| @Profile("h2") | ||||
| @PropertySource("classpath:persistence-h2.properties") | ||||
| class H2Config { | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| package com.baeldung.books.config; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.data.rest.core.config.RepositoryRestConfiguration; | ||||
| import org.springframework.data.rest.core.mapping.ExposureConfiguration; | ||||
| import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; | ||||
| import org.springframework.http.HttpMethod; | ||||
| import org.springframework.web.servlet.config.annotation.CorsRegistry; | ||||
| 
 | ||||
| import com.baeldung.books.models.WebsiteUser; | ||||
| 
 | ||||
| @Configuration | ||||
| public class RestConfig implements RepositoryRestConfigurer { | ||||
| 
 | ||||
|     @Override | ||||
|     public void configureRepositoryRestConfiguration(RepositoryRestConfiguration repositoryRestConfiguration, | ||||
|                                                      CorsRegistry cors) { | ||||
|         ExposureConfiguration config = repositoryRestConfiguration.getExposureConfiguration(); | ||||
|         config.forDomainType(WebsiteUser.class).withItemExposure((metadata, httpMethods) -> httpMethods.disable(HttpMethod.PATCH)); | ||||
|     } | ||||
| } | ||||
| @ -1,12 +1,11 @@ | ||||
| package com.baeldung.springdatawebsupport.application.repositories; | ||||
| 
 | ||||
| import com.baeldung.springdatawebsupport.application.entities.User; | ||||
| import org.springframework.data.domain.Page; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.data.querydsl.QuerydslPredicateExecutor; | ||||
| import org.springframework.data.repository.PagingAndSortingRepository; | ||||
| import org.springframework.stereotype.Repository; | ||||
| 
 | ||||
| import com.baeldung.springdatawebsupport.application.entities.User; | ||||
| 
 | ||||
| @Repository | ||||
| public interface UserRepository extends PagingAndSortingRepository<User, Long>, QuerydslPredicateExecutor<User> { | ||||
| 
 | ||||
| @ -0,0 +1 @@ | ||||
| spring.profiles.default=h2 | ||||
							
								
								
									
										13
									
								
								spring-data-rest-1/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								spring-data-rest-1/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <configuration> | ||||
|     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||
|         <encoder> | ||||
|             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n | ||||
|             </pattern> | ||||
|         </encoder> | ||||
|     </appender> | ||||
| 
 | ||||
|     <root level="INFO"> | ||||
|         <appender-ref ref="STDOUT" /> | ||||
|     </root> | ||||
| </configuration> | ||||
| @ -0,0 +1,8 @@ | ||||
| driverClassName=org.h2.Driver | ||||
| url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1 | ||||
| username=sa | ||||
| password= | ||||
| 
 | ||||
| hibernate.dialect=org.hibernate.dialect.H2Dialect | ||||
| hibernate.show_sql=true | ||||
| hibernate.hbm2ddl.auto=create-drop | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
| 
 | ||||
| import com.baeldung.books.SpringDataRestApplication; | ||||
| 
 | ||||
| @RunWith(SpringRunner.class) | ||||
| @SpringBootTest(classes = SpringDataRestApplication.class) | ||||
| public class SpringContextTest { | ||||
| 
 | ||||
|     @Test | ||||
|     public void whenSpringContextIsBootstrapped_thenNoExceptions() { | ||||
|     } | ||||
| } | ||||
| @ -4,15 +4,12 @@ This module contains articles about Spring Data REST | ||||
| 
 | ||||
| ### Relevant Articles: | ||||
| - [Introduction to Spring Data REST](https://www.baeldung.com/spring-data-rest-intro) | ||||
| - [Guide to Spring Data REST Validators](https://www.baeldung.com/spring-data-rest-validators) | ||||
| - [Working with Relationships in Spring Data REST](https://www.baeldung.com/spring-data-rest-relationships) | ||||
| - [AngularJS CRUD Application with Spring Data REST](https://www.baeldung.com/angularjs-crud-with-spring-data-rest) | ||||
| - [Projections and Excerpts in Spring Data REST](https://www.baeldung.com/spring-data-rest-projections-excerpts) | ||||
| - [Spring Data REST Events with @RepositoryEventHandler](https://www.baeldung.com/spring-data-rest-events) | ||||
| - [Customizing HTTP Endpoints in Spring Data REST](https://www.baeldung.com/spring-data-rest-customize-http-endpoints) | ||||
| - [Spring Boot with SQLite](https://www.baeldung.com/spring-boot-sqlite) | ||||
| - [Spring Data Web Support](https://www.baeldung.com/spring-data-web-support) | ||||
| - [Spring REST and HAL Browser](https://www.baeldung.com/spring-rest-hal) | ||||
| 
 | ||||
| ### The Course | ||||
| The "REST With Spring" Classes: http://bit.ly/restwithspring | ||||
|  | ||||
| @ -33,15 +33,6 @@ | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||
|         </dependency> | ||||
|         <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-rest-hal-browser --> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.data</groupId> | ||||
|             <artifactId>spring-data-rest-hal-explorer</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-validation</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-autoconfigure</artifactId> | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| package com.baeldung.books.config; | ||||
| 
 | ||||
| import org.springframework.boot.web.server.WebServerFactoryCustomizer; | ||||
| import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; | ||||
| @ -22,6 +24,11 @@ public class MvcConfig implements WebMvcConfigurer { | ||||
|         configurer.enable(); | ||||
|     } | ||||
| 
 | ||||
|     @Bean | ||||
|     WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> enableDefaultServlet() { | ||||
|         return (factory) -> factory.setRegisterDefaultServlet(true); | ||||
|     } | ||||
|      | ||||
|     @Bean | ||||
|     AuthorEventHandler authorEventHandler() { | ||||
|         return new AuthorEventHandler(); | ||||
|  | ||||
| @ -1,14 +1,12 @@ | ||||
| package com.baeldung.books.config; | ||||
| 
 | ||||
| import com.baeldung.books.models.WebsiteUser; | ||||
| import com.baeldung.books.projections.CustomBook; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.data.rest.core.config.RepositoryRestConfiguration; | ||||
| import org.springframework.data.rest.core.mapping.ExposureConfiguration; | ||||
| import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; | ||||
| import org.springframework.http.HttpMethod; | ||||
| import org.springframework.web.servlet.config.annotation.CorsRegistry; | ||||
| 
 | ||||
| import com.baeldung.books.projections.CustomBook; | ||||
| 
 | ||||
| @Configuration | ||||
| public class RestConfig implements RepositoryRestConfigurer { | ||||
| 
 | ||||
| @ -16,7 +14,5 @@ public class RestConfig implements RepositoryRestConfigurer { | ||||
|     public void configureRepositoryRestConfiguration(RepositoryRestConfiguration repositoryRestConfiguration, | ||||
|                                                      CorsRegistry cors) { | ||||
|         repositoryRestConfiguration.getProjectionConfiguration().addProjection(CustomBook.class); | ||||
|         ExposureConfiguration config = repositoryRestConfiguration.getExposureConfiguration(); | ||||
|         config.forDomainType(WebsiteUser.class).withItemExposure((metadata, httpMethods) -> httpMethods.disable(HttpMethod.PATCH)); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,11 +1,14 @@ | ||||
| package com.baeldung.books.events; | ||||
| 
 | ||||
| import org.springframework.data.rest.core.annotation.*; | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| import org.springframework.data.rest.core.annotation.HandleAfterCreate; | ||||
| import org.springframework.data.rest.core.annotation.HandleAfterDelete; | ||||
| import org.springframework.data.rest.core.annotation.HandleBeforeCreate; | ||||
| import org.springframework.data.rest.core.annotation.HandleBeforeDelete; | ||||
| import org.springframework.data.rest.core.annotation.RepositoryEventHandler; | ||||
| 
 | ||||
| import com.baeldung.books.models.Author; | ||||
| import com.baeldung.books.models.Book; | ||||
| 
 | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| @RepositoryEventHandler | ||||
| public class AuthorEventHandler { | ||||
|  | ||||
| @ -2,8 +2,6 @@ package com.baeldung.books.events; | ||||
| 
 | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| import org.apache.commons.logging.Log; | ||||
| import org.springframework.data.rest.core.annotation.HandleAfterDelete; | ||||
| import org.springframework.data.rest.core.annotation.HandleBeforeCreate; | ||||
| import org.springframework.data.rest.core.annotation.RepositoryEventHandler; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user