Browse Source

Deprecate "feed" and "document" view packages

Prior to this commit, Spring Framework would ship several abstract
`*View` implementations for rendering PDF, RSS or XLS documents using
well-known libraries. More recently, supporting libraries evolved a lot
with new versions and forks. Spring Framework is not in a position to
efficiently support all variants within the project.

This commit deprecates the relevant classes. Instead, libraries can
reuse existing code and ship optional support for Spring directly.
Often, updating imports and library usage is enough.
As an alternative, applications can decide to perform rendering
direclty in web handlers.

Closes gh-35451
pull/35649/head
Brian Clozel 2 months ago
parent
commit
e6481a011b
  1. 4
      framework-docs/modules/ROOT/pages/web/webmvc-view/mvc-document.adoc
  2. 4
      framework-docs/modules/ROOT/pages/web/webmvc-view/mvc-feeds.adoc
  3. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractPdfStamperView.java
  4. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractPdfView.java
  5. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsView.java
  6. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsxStreamingView.java
  7. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsxView.java
  8. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractAtomFeedView.java
  9. 3
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractFeedView.java
  10. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractRssFeedView.java
  11. 1
      spring-webmvc/src/test/java/org/springframework/web/servlet/view/document/XlsViewTests.java
  12. 1
      spring-webmvc/src/test/java/org/springframework/web/servlet/view/feed/AtomFeedViewTests.java
  13. 1
      spring-webmvc/src/test/java/org/springframework/web/servlet/view/feed/RssFeedViewTests.java

4
framework-docs/modules/ROOT/pages/web/webmvc-view/mvc-document.adoc

@ -4,10 +4,14 @@ @@ -4,10 +4,14 @@
Spring offers ways to return output other than HTML, including PDF and Excel spreadsheets.
This section describes how to use those features.
WARNING: As of Spring Framework 7.0, view classes in the `org.springframework.web.servlet.view.document`
package are deprecated. Instead, libraries can adapt this existing code to provide support with their own `*View` types.
As an alternative, applications can perform direct rendering in web handlers.
[[mvc-view-document-intro]]
== Introduction to Document Views
An HTML page is not always the best way for the user to view the model output,
and Spring makes it simple to generate a PDF document or an Excel spreadsheet
dynamically from the model data. The document is the view and is streamed from the

4
framework-docs/modules/ROOT/pages/web/webmvc-view/mvc-feeds.adoc

@ -1,6 +1,10 @@ @@ -1,6 +1,10 @@
[[mvc-view-feeds]]
= RSS and Atom
WARNING: As of Spring Framework 7.0, view classes in the `org.springframework.web.servlet.view.feed`
package are deprecated. Instead, libraries can adapt this existing code to provide support with their own `*View` types.
As an alternative, applications can perform direct rendering in web handlers.
Both `AbstractAtomFeedView` and `AbstractRssFeedView` inherit from the
`AbstractFeedView` base class and are used to provide Atom and RSS Feed views, respectively. They
are based on https://rometools.github.io/rome/[ROME] project and are located in the

3
spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractPdfStamperView.java

@ -45,7 +45,10 @@ import org.springframework.web.servlet.view.AbstractUrlBasedView; @@ -45,7 +45,10 @@ import org.springframework.web.servlet.view.AbstractUrlBasedView;
* @author Juergen Hoeller
* @since 2.5.4
* @see AbstractPdfView
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
public abstract class AbstractPdfStamperView extends AbstractUrlBasedView {
public AbstractPdfStamperView(){

3
spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractPdfView.java

@ -48,7 +48,10 @@ import org.springframework.web.servlet.view.AbstractView; @@ -48,7 +48,10 @@ import org.springframework.web.servlet.view.AbstractView;
* @author Juergen Hoeller
* @author Jean-Pierre Pawlak
* @see AbstractPdfStamperView
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
public abstract class AbstractPdfView extends AbstractView {
/**

3
spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsView.java

@ -36,7 +36,10 @@ import org.springframework.web.servlet.view.AbstractView; @@ -36,7 +36,10 @@ import org.springframework.web.servlet.view.AbstractView;
*
* @author Juergen Hoeller
* @since 4.2
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
public abstract class AbstractXlsView extends AbstractView {
/**

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsxStreamingView.java

@ -33,7 +33,11 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook; @@ -33,7 +33,11 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
*
* @author Juergen Hoeller
* @since 4.2
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
@SuppressWarnings("removal")
public abstract class AbstractXlsxStreamingView extends AbstractXlsxView {
/**

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/document/AbstractXlsxView.java

@ -31,7 +31,11 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -31,7 +31,11 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
*
* @author Juergen Hoeller
* @since 4.2
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
@SuppressWarnings("removal")
public abstract class AbstractXlsxView extends AbstractXlsView {
/**

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractAtomFeedView.java

@ -43,7 +43,11 @@ import jakarta.servlet.http.HttpServletResponse; @@ -43,7 +43,11 @@ import jakarta.servlet.http.HttpServletResponse;
* @see #buildFeedMetadata
* @see #buildFeedEntries
* @see <a href="https://www.atomenabled.org/developers/syndication/">Atom Syndication Format</a>
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
@SuppressWarnings("removal")
public abstract class AbstractAtomFeedView extends AbstractFeedView<Feed> {
/**

3
spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractFeedView.java

@ -46,7 +46,10 @@ import org.springframework.web.servlet.view.AbstractView; @@ -46,7 +46,10 @@ import org.springframework.web.servlet.view.AbstractView;
* @param <T> the {@link WireFeed} type
* @see AbstractRssFeedView
* @see AbstractAtomFeedView
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
public abstract class AbstractFeedView<T extends WireFeed> extends AbstractView {
@Override

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/feed/AbstractRssFeedView.java

@ -44,7 +44,11 @@ import org.springframework.http.MediaType; @@ -44,7 +44,11 @@ import org.springframework.http.MediaType;
* @since 3.0
* @see #buildFeedMetadata
* @see #buildFeedItems
* @deprecated since 7.0. Libraries or applications can provide their own {@code View}
* class or perform rendering in web handlers directly.
*/
@Deprecated(since = "7.0", forRemoval = true)
@SuppressWarnings("removal")
public abstract class AbstractRssFeedView extends AbstractFeedView<Channel> {
public AbstractRssFeedView() {

1
spring-webmvc/src/test/java/org/springframework/web/servlet/view/document/XlsViewTests.java

@ -42,6 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat; @@ -42,6 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Juergen Hoeller
* @since 4.2
*/
@SuppressWarnings("removal")
class XlsViewTests {
private final MockHttpServletRequest request = new MockHttpServletRequest();

1
spring-webmvc/src/test/java/org/springframework/web/servlet/view/feed/AtomFeedViewTests.java

@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; @@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Arjen Poutsma
*/
@SuppressWarnings("removal")
class AtomFeedViewTests {
private final AbstractAtomFeedView view = new MyAtomFeedView();

1
spring-webmvc/src/test/java/org/springframework/web/servlet/view/feed/RssFeedViewTests.java

@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; @@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Arjen Poutsma
*/
@SuppressWarnings("removal")
class RssFeedViewTests {
private final AbstractRssFeedView view = new MyRssFeedView();

Loading…
Cancel
Save