注释@BEAN对于此位置错误不允许



我在一本书中读到,每当我们想要基于Java的配置并想要定义bean时,我们都会使用@Bean注释。但是当我这样做时,我会遇到错误: The annotation @Bean is disallowed for this location。我的豆是:

package com.mj.cchp.bean;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import org.springframework.context.annotation.Bean;
import com.mj.cchp.annotation.Email;
@Bean
public class UserBean {
    @NotNull
    @Email
    private String email;
    @NotNull
    private String firstName;
    @NotNull
    private String lastName;
    @Digits(fraction = 0, integer = 10)
    private String phoneNo;
    @NotNull
    private String role;
    public String getEmail() {
    return email;
    }
    public String getFirstName() {
    return firstName;
    }
    public String getLastName() {
    return lastName;
    }
    public String getPhoneNo() {
    return phoneNo;
    }
    public String getRole() {
    return role;
    }
    public void setEmail(String email) {
    this.email = email;
    }
    public void setFirstName(String firstName) {
    this.firstName = firstName;
    }
    public void setLastName(String lastName) {
    this.lastName = lastName;
    }
    public void setPhoneNo(String phoneNo) {
    this.phoneNo = phoneNo;
    }
    public void setRole(String role) {
    this.role = role;
    }
}

@Bean注释是定义要在弹簧容器中加载的bean。它类似于指定

的XML配置
<bean id="myId" class="..."/>

这应在Configuration文件(Java)中使用。类似于您的applicationContext.xml

@Configuration
@ComponentScan("...")
public class AppConfig{
   @Bean 
   public MyBean  myBean(){
      return new MyBean();
   }
}

@Bean, @Configuration和其他新引入的注释将完全执行您在XML config。

@BEAN注释告诉Spring,用@bean注释的A 方法将返回一个在Spring应用程序上下文中应注册为BEAN的对象。

因此,您需要使用@configuration注释的UserBeanConfig类,该类将具有创建新bean的方法。

@Configuration
public class UserBeanConfig {
   @Bean 
   public UserBean userBean(){
      return new UserBean();
   }
}

从我的角度来看,弹簧并非旨在构建简单的域对象。您应该使用spring来引导服务/dao等的依赖关系

所以我建议避免域对象的弹簧。

最新更新