Java Spring FrameWork
Notes
Rest Architecture
REST (REpresentational State Transfer) New naming : HATEOAS (Hypermedia as the Engine of Application State)
- Client-serveur: Data remain on serveur and client is a separated entity
- No state: Each request provide to the server all the necessary information to provide the service
- Cache: The information sent by the server must contain, creation date, expiration date.
- Uniform Interface:
- Each resources has a unic Id;
- Resources have representation defined;
- Auto descriptive message: The content and how to read the message; (Like how the message is coded Utf8).
- Hypermedia Each access to the next step of the application is describe in the current message.
- Hyercharchie
- Code-on-Demande(facultative): Script excecution on the client retreived from the server.
| Stackoverflow what exactly is restful programming
Maven Setup
<!-- General repository to get package -->
<repositories>
<repository>
<id>io.spring.repo.maven.release</id>
<url>http://repo.spring.io/release/</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
<!-- Maven bom to manage dependencies between jar -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Dependencies without version because they are managed by Maven Bom -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
MVC Setup
- In the web.xml specify the location of the Spring Configuration File
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/business-config.xml, classpath:spring/tools-config.xml</param-value> </context-param>
OR
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value> </context-param>