Lista Universal

Para reutilizar la lista de cualquier método se crear un método que devuelve una lista con anotación @ModelAttribute

@Controller
@RequestMapping("/project") //Primer Nivel de Mapeo 
public class ProjectController {
    @GetMapping({"","/","/Home"}) //Segundo Nivel de Mapeo
    public String projects(Model model) {
        return "projects";
    }
    
    @GetMapping("/list")
    public String  tolistProject() {
        return "list_projects";
    }
    
    @ModelAttribute("projects")
    public List<Project> listProject(){
        Project p1 = new Project(
                "Proyecto 01",
                "Descripción del proyecto 01"
                );
        
        Project p2 = new Project(
                "Proyecto 02",
                "Descripción del proyecto 02",
                "https://oregoom.com"
                );
        
        Project p3 = new Project(
                "Proyecto 03",
                "Descripción del proyecto 03"
                );
        
        List<Project> projects = new ArrayList<>();
        
        projects.add(p1);
        projects.add(p2);
        projects.add(p3);
        
        return projects;
    }
}

Y esta lista lo recuperamos de otro archivo html list_projects.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Lista de Proyectos</title>
</head>
<body>
    <h1>Lista de Proyectos</h1>
    
    <table>
        <thead>
            <tr>
                <th>Titulo</th>
                <th>Descripción</th>
                <th>Url</th>
            </tr>
        </thead>
        <tbody>
            <tr th:each="project: ${projects}">
                <td th:text="${project.title}"></td>
                <td th:text="${project.description}"></td>
                <td th:if="${project.url != null}">
                    <a th:href="${project.url}" th:text="${project.url}"></a>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>