Difference between Role and GrantedAuthority in Spring Security

Think of a GrantedAuthority as being a “permission” or a “right”. Those “permissions” are (normally) expressed as strings (with the getAuthority() method). Those strings let you identify the permissions and let your voters decide if they grant access to something. You can grant different GrantedAuthoritys (permissions) to users by putting them into the security context. … Read more

How can I inject a property value into a Spring Bean which was configured using annotations?

You can do this in Spring 3 using EL support. Example: @Value(“#{systemProperties.databaseName}”) public void setDatabaseName(String dbName) { … } @Value(“#{strategyBean.databaseKeyGenerator}”) public void setKeyGenerator(KeyGenerator kg) { … } systemProperties is an implicit object and strategyBean is a bean name. One more example, which works when you want to grab a property from a Properties object. It … Read more

What is the difference between Hibernate and Spring Data JPA

Hibernate is a JPA implementation, while Spring Data JPA is a JPA data access abstraction. Spring Data JPA cannot work without a JPA provider. Spring Data offers a solution to the DDD Repository pattern or the legacy GenericDao custom implementations. It can also generate JPA queries on your behalf through method name conventions. With Spring … Read more

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

I had a similar problem when running a spring web application in an Eclipse managed tomcat. I solved this problem by adding maven dependencies in the project’s web deployment assembly. Open the project’s properties (e.g., right-click on the project’s name in the project explorer and select “Properties”). Select “Deployment Assembly”. Click the “Add…” button on … Read more

Type safety: Unchecked cast

The problem is that a cast is a runtime check – but due to type erasure, at runtime there’s actually no difference between a HashMap<String,String> and HashMap<Foo,Bar> for any other Foo and Bar. Use @SuppressWarnings(“unchecked”) and hold your nose. Oh, and campaign for reified generics in Java 🙂

Using env variable in Spring Boot’s application.properties

You don’t need to use java variables. To include system env variables add the following to your application.properties file: spring.datasource.url = ${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/”nameofDB” spring.datasource.username = ${OPENSHIFT_MYSQL_DB_USERNAME} spring.datasource.password = ${OPENSHIFT_MYSQL_DB_PASSWORD} But the way suggested by @Stefan Isele is more preferable, because in this case you have to declare just one env variable: spring.profiles.active. Spring will read the … Read more

Spring Boot – How to log all requests and responses with exceptions in single place?

Don’t write any Interceptors, Filters, Components, Aspects, etc., this is a very common problem and has been solved many times over. Spring Boot has a modules called Actuator, which provides HTTP request logging out of the box. There’s an endpoint mapped to /trace (SB1.x) or /actuator/httptrace (SB2.0+) which will show you last 100 HTTP requests. … Read more

How to check String in response body with mockMvc

You can call andReturn() and use the returned MvcResult object to get the content as a String. See below: MvcResult result = mockMvc.perform(post(“/api/users”).header(“Authorization”, base64ForTestUser).contentType(MediaType.APPLICATION_JSON) .content(“{\”userName\”:\”testUserDetails\”,\”firstName\”:\”xxx\”,\”lastName\”:\”xxx\”,\”password\”:\”xxx\”}”)) .andDo(MockMvcResultHandlers.print()) .andExpect(status().isBadRequest()) .andReturn(); String content = result.getResponse().getContentAsString(); // do what you will