我在一本书中读到,无论何时我们想要基于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;
}
}
答案 0 :(得分:4)
@Bean
注释用于定义要在Spring容器中加载的Bean。它类似于指定
<bean id="myId" class="..."/>
这应该在Configuration
文件(java)中使用。这与您的applicationContext.xml
@Configuration
@ComponentScan("...")
public class AppConfig{
@Bean
public MyBean myBean(){
return new MyBean();
}
}
@Bean, @Configuration
和其他新引入的注释将完全按照您在Xml配置中执行的操作。
答案 1 :(得分:2)
@Bean注释告诉Spring,使用@Bean注释的方法将返回一个应该在Spring应用程序上下文中注册为bean的对象。
所以你需要一个UserBeanConfig类,它将使用@Configuration注释,它将有一个创建新bean的方法。
@Configuration
public class UserBeanConfig {
@Bean
public UserBean userBean(){
return new UserBean();
}
}
从我的角度来看,Spring并不是为构造简单的Domain对象而设计的。 您应该使用Spring来引导Service / DAO等的依赖项。
所以我建议避免使用spring对象域对象。