「SpringBoot」SpringBoot掲示板
22152 ワード
SpringBoot+Gradle+JPAプロジェクト掲示板登録
プロジェクトはNext jsを使ったプロジェクトなので、Swaggerを使ってテストします
1. build.グラデーションへのSwaggerの追加
🌟 Swagger 2を使用
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
runtimeOnly 'mysql:mysql-connector-java'
// swagger
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
compile group: 'io.swagger', name: 'swagger-annotations', version: '1.5.21'
compile group: 'io.swagger', name: 'swagger-models', version: '1.5.21'
}
//swaggerの下に4つのdependenciesを追加gradle refreshを実行し、SwaggerConfigを作成します.
SwaggerConfigに次の内容を追加します.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.ant("/api/**"))
.build();
}
}
basePackageを指定する例がたくさんあります.この項目では、コントローラは1つの場所に集中するのではなく、機能別に分離されます.
.apis(RequestHandlerSelectors.basePackage(basePackage))
そうじゃない.apis(RequestHandlerSelectors.any())
このように実施する.実行後、
http://localhost:8080/swagger-ui.html
で次の画面を表示できます.2.コントローラの作成
@Controller
@AllArgsConstructor
@RequestMapping("/api/v1")
public class ShareController {
private ShareService shareService;
@PostMapping("/share")
public String write(ShareDto shareDto) {
shareService.savePost(shareDto);
return "hi";
}
}
@AllArgsController:存在する場合、beanオブジェクトを作成してサービスに接続する必要はありません.したがって、サービス受信時に@Autowiredは不要です.
3.サービスの作成
@AllArgsConstructor
@Service
public class ShareService {
private ShareRepository shareRepository;
@Transactional
public Long savePost(ShareDto shareDto) {
return shareRepository.save(shareDto.toEntity()).getIdx();
}
}
@Transactional:このサービスは完全に完了する必要があります(たとえば、データベースに1、2、3および4のコラムがある場合、1、2、3は正常にアクセスしますが、4番の値が誤って入力されると、1、2、3の値だけを保存することはできません.したがって、1、2、3、4の値が完全に入力されるまで何も行われません).
4.レポートの作成
public interface ShareRepository extends JpaRepository<ShareEntity, Long> {
}
インタフェースとして作成し、Jpa Repositoryを継承JpaRepository<Entity 클래스, Primary Key 타입>
形式で作成5.Entityの作成
1) ShareEntity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class ShareEntity extends TimeEntity {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long idx;
@Column
private Long writer;
@Column
private String title;
@Column
private String content;
@Column
private Integer catego;
@Column
private Integer state;
@Builder
public ShareEntity(Long idx, String title, String content, Long writer,
Integer catego, Integer state) {
this.idx = idx;
this.writer = writer;
this.title = title;
this.content = content;
this.catego = catego;
this.state = state;
}
}
ShareEntity継承TimeEntity2) TimeEntity
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class TimeEntity {
@Column(updatable = false)
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
6.Dtoの作成
@Getter
@Setter
@ToString
@NoArgsConstructor
public class ShareDto {
private Long idx;
private Long writer;
private String title;
private String content;
private Integer catego;
private Integer state;
private LocalDateTime createdDate;
private LocalDateTime modifiedDate;
public ShareEntity toEntity(){
ShareEntity shareEntity = ShareEntity.builder()
.idx(idx)
.writer(writer)
.title(title)
.content(content)
.catego(catego)
.state(state)
.build();
return shareEntity;
}
@Builder
public ShareDto(Long idx, String title, String content, Long writer, LocalDateTime createdDate, LocalDateTime modifiedDate,
Integer catego, Integer state) {
this.idx = idx;
this.writer = writer;
this.title = title;
this.content = content;
this.catego = catego;
this.state = state;
this.createdDate = createdDate;
this.modifiedDate = modifiedDate;
}
}
7. Swagger Test
SWAGで適切なAPIを選択し、値を入力します.
createdDateとmodifiedDate、idxは自動的に生成されるため、空です.
🍋 ddl autoをcreateとして保持し、Entityクラス名に基づいてテーブルを作成します.
📌 参考になるブログ
Jpa掲示板の作成
Swagger
Reference
この問題について(「SpringBoot」SpringBoot掲示板), 我々は、より多くの情報をここで見つけました https://velog.io/@dasu/Spring-Boot-Spring-Boot-Gradle-JPA-게시판-등록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol