没有控制器的Springboot端点

时间:2019-03-20 14:10:46

标签: spring-boot

我有一个简单的Springboot项目,其实体为:

@Entity
@Getter
@Setter
@ToString

@RequiredArgsConstructor
public class User implements UserDetails {

    @Id
    @GeneratedValue
    private long id;

    @NotEmpty
    @NonNull
    @Size(min=3, max=100)
    private String email;

    @NotEmpty
    @NonNull
    @Size(min=3, max=50)
    private String username;

    @NotEmpty
    @NonNull
    @Size(min=3, max=50)
    private String password;

    @NotNull
    @NonNull
    private boolean isAccountNonExpired = true;

    @NotNull
    @NonNull
    private boolean isAccountNonLocked = true;

    @NotNull
    @NonNull
    private boolean isCredentialsNonExpired = true;

    @NotNull
    @NonNull
    private boolean isEnabled = true;

    @ManyToMany
    private Set<Role> roles = new HashSet<Role>();

    public void addRole(Role r) {
        roles.add(r);
    }

    public User() {}

    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<SimpleGrantedAuthority> authorities = new ArrayList<>();
        for(Role role : roles) {
            authorities.add(new SimpleGrantedAuthority(role.getName()));
        }
        return authorities;
    }

我为/users创建了一个控制器,但没有为/roles创建一个控制器

但是,在端点http://localhost:8080/users/2/roles下,我得到了一个指向

的指针
role: {
href: "http://localhost:8080/roles/1"
},

/roles/1产生的地方

{
name: "ROLE_USER",
_links: {
self: {
href: "http://localhost:8080/roles/1"
},
role: {
href: "http://localhost:8080/roles/1"
},
users: {
href: "http://localhost:8080/roles/1/users"
}
}
}

因此,至少在某种程度上,Springboot会自动生成一些路径。

有人可以为此提供一些背景吗?

1 个答案:

答案 0 :(得分:2)

您正在使用一些依赖关系,它将为您生成依赖关系。我猜可能是spring-data-rest。如果不希望这样,请删除该依赖项,使用spring-boot-starter-web依赖项,然后只有您创建的端点可用。