如何在Spring Boot中获取Bean的原型

时间:2016-03-01 13:57:32

标签: spring spring-data

我正在使用Spring Boot和Spring Data JPA。我创建了一个实体作为具有原型范围的Spring bean。如何让每个对象的bean在数据库中持久化?

@Entity
@Table(name="sample")
@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Sample {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

如果我不将该实体用作Spring bean,那么我将使用以下代码来获取该对象:

Sample sample = new Sample();

如何在Spring Boot中使用Prototype范围bean来使用该对象?

1 个答案:

答案 0 :(得分:0)

您不想为实体定义范围。实体不像春豆。

Spring数据使用三个重要组件来持久保存到数据库中。

1)实体类 - 每个表都必须定义自己的java对象模型,称为实体类。

@Entity
@Table(name="sample")
public class Sample {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @Column(name="name") //Column name from the table
    private String name;

2)Repo接口 - 在其中您可以定义自己的SQL实现,默认情况下它将具有save方法。

public interface SampleRepo extends CrudRepository<Sample,Long>{
List<Sample> findByName(String name);
}

3)客户端程序:

private SampleRepo s;
//instantiate s using autowired setter/constructor
....
//Select example
List<Sample> sampleList=s.findByName("example");

//Insert example
//Id is auto. So no need to setup explicit value for it. 
Sample entity=new Sample();
s.setName("Example");
s.save(entity);