以下是我的员工班。如果我在第1行,第2行或第3行中编写@Bean批注,则会引发错误。
它允许@Bean批注仅用于方法名称。 为什么?
import org.springframework.context.annotation.Bean;
//line 1
public class Employee {
int id;
String name;
// line 2
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
//line 3
public Employee() {
}
@Bean
public void showCurrentEmployee() {
System.out.println(this.id + " " + this.name);
}
}
正如春天的世界所说; Bean作用域是单例的。这在哪里适用?
@Bean方法将如何保存单例实例以及什么?
如果无法将@Bean赋予类名,那么以下内容如何有效?
<bean name="emp" class="com.myProj.Employee">
<property name="id">
<value>20</value>
</property>
<property name="name">
<value>John</value>
</property>
</bean>
答案 0 :(得分:1)
@Bean注释只能在Spring配置类中使用。此类应使用@Configuration批注
批注通过属性注入,@ Value注释会有所帮助。
@Configuration
public class ConfigClass {
@Bean
public BeanClassOne beanOne(@Value("20") Integer intValue) {
return new BeanClassOne(intValue);
}
@Bean
public BeanClassTwo beanTwo() {
return new BeanClassTwo();
}
@Bean
public BeanClassThree beanThree() {
return new BeanClassThree();
}
}
从类中制作Spring bean的另一种方法,可以使用@Service或@Component注释对其进行注释
@Service
public class BeanClass {
@Value("String value")
privat String strField;
// your bean methods
}
更多信息在这里 https://www.tutorialspoint.com/spring/spring_java_based_configuration.htm