使用: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.class
、super
和this
. 就好像注释不存在一样。
起初,我以为我以某种方式滥用了它,因为我最近才开始使用它,但是我一直在查看我的代码并与示例进行比较几个小时。据我所知,语法和用法是正确的。
我也做了一些调试。除了检查智能感知之外,我还尝试在不同的范围内使用它,包括在同一个包中,我尝试了“最简单形式”的方法,我更改了方法,使其只有一个 int 参数。在每种情况下,我都无法让环境确认构造函数。
我在这里忽略了什么吗?