如何为一个类编写@Bean?

时间:2019-06-25 12:01:12

标签: java spring javabeans

以下是我的员工班。如果我在第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> 

1 个答案:

答案 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