Spring Boot @Bean là gì? – Học Spring Boot

Spring là một Framework Java application phổ biến và Spring Boot là một sự phát triển của Spring giúp tạo ra các ứng dụng độc lập với effot nhỏ nhất.

Annotation Spring Boot @Bean

Annotation Spring @Bean cho biết rằng một method tạo ra một bean sẽ được quản lý bởi Spring container. Nó là một annotation ở method. Trong khi cấu hình Java (@Configuration), phương thức được thực thi và giá trị trả về của nó được đăng ký dưới dạng bean trong BeanFactory.

Tổng hợp 200+ tài liệu, sách, bài thực hành, video hướng dẫn lập trình… từ cơ bản đến nâng cao

Spring Boot @Bean example

Core Spring Container tạo và quản lý bean. Trong ví dụ dưới đây, tôi sẽ hướng dẫn cách tạo một Spring bean với annotation @Bean

Ứng dụng này là ứng dụng Spring Boot dòng lệnh.

pom

.xml

src

├───

main

│ ├───

java

│ │ └───

com

│ │ └───

hdd

│ │

Application

.java

│ │

AppName

.java

│ └───

resources

application

.properties

logback

.xml

└───

test

└───

java

Code language:

CSS

(

css

)

Đây là cấu trúc dự án của ứng dụng Spring Boot.

pom.xml

THAM GIA KHÓA HỌC LẬP TRÌNH

<

project

xmlns

=

"http://maven.apache.org/POM/4.0.0"

xmlns:xsi

=

"http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation

=

"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

>

<

modelVersion

>4.0.0

</

modelVersion

>

<

groupId

>com.hdd

</

groupId

>

<

artifactId

>springbootbean

</

artifactId

>

<

version

>1.0-SNAPSHOT

</

version

>

<

packaging

>jar

</

packaging

>

<

properties

>

<

project.build.sourceEncoding

>UTF-8

</

project.build.sourceEncoding

>

<

maven.compiler.source

>11

</

maven.compiler.source

>

<

maven.compiler.target

>11

</

maven.compiler.target

>

</

properties

>

<

parent

>

<

groupId

>org.springframework.boot

</

groupId

>

<

artifactId

>spring-boot-starter-parent

</

artifactId

>

<

version

>2.2.2.RELEASE

</

version

>

</

parent

>

<

dependencies

>

<

dependency

>

<

groupId

>org.springframework.boot

</

groupId

>

<

artifactId

>spring-boot-starter

</

artifactId

>

</

dependency

>

</

dependencies

>

<

build

>

<

plugins

>

<

plugin

>

<

groupId

>org.springframework.boot

</

groupId

>

<

artifactId

>spring-boot-maven-plugin

</

artifactId

>

</

plugin

>

</

plugins

>

</

build

>

</

project

>

Code language:

HTML, XML

(

xml

)

Đây là tệp xây dựng Maven. Spring-boot-starter là phần khởi động cốt lõi bao gồm hỗ trợ cấu hình tự động, ghi nhật ký và YAML. Ứng dụng được đóng gói thành tệp JAR.

com/hdd/AppName.java

package com.hdd;

interface

AppName

{ String getName(); }

Code language:

PHP

(

php

)

Tôi có một interface đơn giản để xác định một contract. Nó được dùng để tạo một lớp ẩn danh và trả về tên application.

TÀI LIỆU HỌC LẬP TRÌNH

resources/application.properties.

spring.main.banner-mode=off spring.main.log-startup-info=

false

app.name=SpringBootBean

Code language:

JavaScript

(

javascript

)

application.properties chứa các config của ứng dụng. Có một số thuộc tính ứng dụng được tích hợp sẵn và chúng ta có thể tạo thuộc tính tùy chỉnh. Thuộc tính spring.main.banner-mode là thuộc tính tích hợp sẵn của Spring; tôi đã tắt nó đi. Cùng với thuộc tính spring.main.log-startup-info chúng ta có thể tắt thông báo ghi nhật ký khởi động. app.name là thuộc tính tình chỉnh của tôi có chứa tên application.

resources/logback.xml.

<

configuration

>

<

include

resource

=

"org/springframework/boot/logging/logback/base.xml"

/>

<

logger

name

=

"org.springframework"

level

=

"ERROR"

/>

<

logger

name

=

"com.hdd"

level

=

"INFO"

/>

</

configuration

>

Code language:

HTML, XML

(

xml

)

Trong file logback.xml, tôi config application logging. Tôi đã đặt level là ERROR. Bằng cách này, đầu ra sẽ không bị lộn xộn với các thông tin cần thiết. Dependency spring-boot-starter cho phép ghi logging.

com/hdd/Application.java

package com.hdd;

import

org.slf4j.Logger;

import

org.slf4j.LoggerFactory;

import

org.springframework.beans.factory.annotation.Autowired;

import

org.springframework.beans.factory.annotation.Value;

import

org.springframework.boot.CommandLineRunner;

import

org.springframework.boot.SpringApplication;

import

org.springframework.boot.autoconfigure.SpringBootApplication;

import

org.springframework.context.annotation.Bean; @SpringBootApplication public

class

Application

implements

CommandLineRunner

{ private

static

final Logger logger = LoggerFactory.getLogger(Application.class); @Autowired private AppName appName; @Bean public AppName getAppName(@Value(

"${app.name}"

)

String

appName) {

return

() -> appName; } @Override public

void

run(

String

... args) throws Exception { logger.info(

"Application name: {}"

, appName.getName()); } public

static

void

main(

String

[] args) { SpringApplication.run(Application.class, args); } }

Code language:

JavaScript

(

javascript

)

Trong Application, chúng ta có thể tạo bean, gọi phương thức của nó và thiết lập ứng dụng Spring Boot. Giao diện CommandLineRunner chỉ ra rằng một bean sẽ chạy khi nó được chứa trong SpringApplication. Nó có thể được sử dụng để tạo các ứng dụng dòng lệnh trong Spring Boot.

@SpringBootApplication

public

class

Application

implements

CommandLineRunner

{

Code language:

PHP

(

php

)

Chú thích @SpringBootApplication cho phép tự động cấu hình và quét thành phần.

@Autowired

private AppName appName;

Code language:

CSS

(

css

)

Với chú thích @Autowosystem, tôi đưa bean AppName của chúng tôi vào field.

@Bean public AppName getAppName(@Value(

"${app.name}"

)

String

appName) {

return

() -> appName; }

Code language:

JavaScript

(

javascript

)

Ở đây tôi tạo bean AppName; bean được quản lý bởi Spring container. Trong khi chú thích @Component được sử dụng để trang trí các lớp được quét tự động bằng cách quét Spring, chú thích @Bean được sử dụng để khai báo rõ ràng việc tạo bean.

Chú thích @Value được sử dụng để đặt giá trị của thuộc tính app.name vào tham số appName.

logger

.info

("

Application

name

: {}",

appName

.getName

());

Code language:

CSS

(

css

)

Run project:

mvn -q spring-boot: run

Tổng kết

Trong hướng dẫn này, tôi đã tạo một Spring bean với chú thích @Bean. Chúc bạn thành công.

Tham khảo một số bài viết khác:

Những annotation trong Spring Boot

Hướng dẫn sử dụng Spring Data JPA

>> Xem ngay Tài liệu Java Core giúp bạn “Nâng Cấp” kỹ năng lập trình