如何为班级编写@Bean? [复制]

Posted

技术标签:

【中文标题】如何为班级编写@Bean? [复制]【英文标题】:How to write @Bean for a class? [duplicate] 【发布时间】:2019-11-07 06:21:36 【问题描述】:

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

【问题讨论】:

docs.spring.io/spring-javaconfig/docs/1.0.0.m3/reference/html/… 看看这个文件。它会帮助你 请不要链接到不再相关的文档。 Spring Java Config 项目已经死了好几年了。它的一部分(和经验教训)已被纳入 Spring 本身。 Bean 作用域在 Spring 中默认是单例的。这意味着只存在这个类的一个实例。 Spring 在第一次使用时创建它。它将由 Spring 管理,并在每次重用时注入。 @Elio,但我的 Employee 类可以有多个实例。 我不确定您需要的是@Bean 还是@Entity?在您的情况下,Empoyee 类是什么,它是数据库中的条目还是服务?请参阅这两个链接,了解 Spring 中 @Bean 的范围。它们可能有助于更好地了解您的需求:baeldung.com/spring-bean-scopes 或 tutorialspoint.com/spring/spring_bean_scopes.htm 【参考方案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

【讨论】:

所以我上面的实现是错误的? 您的第三个返回类型是 BeanClassThree 但实际上返回的是 BeanClass。 @Rashin 已修复。谢谢。 @user2746466 是的。您错误地使用了 Bean 注释。此注解类似于 XML spring 配置中的 标记,只能在所谓的 Java 配置中使用。你可以在我的回答中看到它的例子。 @AlexeyUsharovski,我已经编辑了问题,请看我的解释

以上是关于如何为班级编写@Bean? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Spring 托管 bean 编写 Junit 测试用例?

如何为需要 4 个数字输入的 C 程序编写 Bash 脚本? [复制]

我们如何为 Firebase 存储编写依赖于 Firebase 实时数据库中的值的安全规则? [复制]

如何为 FastAPI 应用程序编写 SQLAlchemy 测试夹具

如何为 Lotus Notes 编写和使用 Java 代理

如何为溶解效果编写 sceneKit 着色器修改器