1

使用:Spring Boot Maven Lombok STS 4.9

我有一个简单的构造函数,它接受 3 个参数并将它们分别分配给相应的字段。另一个字段是自动生成的,另外两个是 Spring 自动装配的。显式定义的构造函数用 @Builder 注释(在构造函数级别,正如 Lombok 在文档中推荐的那样。)构造函数如下所示:

    @Id
    @GeneratedValue( )
    @Column(value="account_id")
    private Long accountId;
    
    @Setter
    @Column(value="user_id")
    @ManyToOne
    private Long userId;
    
    @Setter
    @Column(value="credentials")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    private Credentials credentials;
    
    @Setter
    @Column(value="user_profile")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    private UserProfileInfo userProfileInfo;
    
    @Setter
    @Column(value="account_credit")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    @Autowired
    private Credit acctCredit;
    
    @Column(value="account_state")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    @Autowired
    private AccountState acctState;
    
    
    
    @Builder
    public Account(Long userId, Credentials cred, UserProfileInfo info){
        this.userId = userId;
        this.credentials = cred;
        this.userProfileInfo = info;    
    }

据我所知,一切似乎都在这里检查出来。至少,没有警告或错误。但是,当我尝试在builder()其他地方使用该方法时,如下所示:

    @Test
    void testThreeArgConstructerReturnsProperObject() {
        
        Account testAccount = Account.builder().build();
        
    }

...就好像@Builder根本不存在这种方法一样。我在构建下得到了通常的红色下划线,但是用光标悬停只是提供了builder()在 Account 类中声明一个新的选项。builder()如果我从测试类中删除,智能感知只会显示Account.classsuperthis. 就好像注释不存在一样。

起初,我以为我以某种方式滥用了它,因为我最近才开始使用它,但是我一直在查看我的代码并与示例进行比较几个小时。据我所知,语法和用法是正确的。

我也做了一些调试。除了检查智能感知之外,我还尝试在不同的范围内使用它,包括在同一个包中,我尝试了“最简单形式”的方法,我更改了方法,使其只有一个 int 参数。在每种情况下,我都无法让环境确认构造函数。

我在这里忽略了什么吗?

4

1 回答 1

0

我终于想通了!龙目岛不工作的原因是由于我的电脑。自从切换到PC后,我就没有使用它。显然,Lombok 不喜欢 linux 上的 STS。为了让它工作,我不得不通过一个不容易找到说明的过程手动安装,我最终在这里找到了。

于 2021-06-06T19:01:10.527 回答