Spring bean là gì spring bean là gì

Bạn đang xem: spring bean là gì spring bean là gì Tại monrun.vn

Trong bài ngày hôm nay tất cả chúng ta sẽ tìm hiểu nốt 2 khái niệm
Bean để hoàn thiện phần cơ bản của Spring Boot.

Bạn đang xem: Spring bean là gì

Seting

pom.xml

4.0.0 pom org.springframework.boot spring-boot-starter-parent 2.0.5.RELEASE me.loda.spring spring-boot-learning 0.0.1-SNAPSHOT spring-boot-learning Everything about Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin Cấu trúc thư mục:

*

Configuration là một Annotation đánh dấu trên một Class cho phép Spring Boot hiểu rằng đây là nơi khái niệm ra các Bean.

Bean là một Annotation được đánh dấu trên các method cho phép Spring Boot hiểu rằng đây là Bean và sẽ thực hiện mang Bean này vào Context.

Component` */public class SimpleBean { private String username; public SimpleBean(String username) { setUsername(username); }
Override public String toString() { return “This is a simple bean, name: ” + username; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}AppConfig.java

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;
Bean SimpleBean simpleBeanConfigure(){ // Khởi tạo một instance của SimpleBean và trả ra ngoài return new SimpleBean(“loda”); }}App.java

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;
SpringBootApplicationpublic class App { public static void main(String args) { ApplicationContext context = SpringApplication.run(App.class, args); // Lấy ra bean SimpleBean trong Context SimpleBean simpleBean = context.getBean(SimpleBean.class); // In ra màn hình System.out.println(“Simple Bean Example: ” + simpleBean.toString()); }}Output:

Simple Bean Example: This is α simple bean, name: lodaBạn sẽ thấy là SimpleBean là một object được quản lý trong Context của Spring Boot, mặc dù trong bài này, tất cả chúng ta không hề sử dụng tới các khái niệm
Component.

In Background

Đằng sau chương trình, Spring Boot lần đầu khởi chạy, ngoài việc đi tìm các
Component thì nó còn làm một nhiệm vụ nữa là tìm các class
Configuration.

Đi tìm class có đánh dấu
ConfigurationTạo ra đối tượng từ class có đánh dấu
Configurationtìm các method có đánh dấu
Bean trong đối tượng vừa tạoThực hiện gọi các method có đánh dấu
Bean để lấy ra các Bean và mang vào `Context.

Ngoài ra, về bản chất,
Configuration cũng là
Component. Nó chỉ khác ở ý nghĩa sử dụng. (Giống với việc class được đánh dấu
Service chỉ nên phục vụ logic vậy).

Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Component // Nó được đánh dấu là Componentpublic
interface Configuration {
AliasFor( annotation = Component.class ) String value() default “”;}

Có ý nghĩa gì?

Nhiều bạn sẽ tự hỏi rằng
Configuration và
Bean sẽ có ý nghĩa gì khi tất cả chúng ta đã có
Component? Sao không đánh dấu SimpleBean là
Component cho nhanh?

Các bạn thắc mắc rất đúng, và việc sử dụng
Component cũng hoàn toàn ổn.

Xem thêm: Cầu Nguyện Là Gì

Thông thường thì các class được đánh dấu
Component đều có thể tạo tự động và inject tự động được.

Tuy nhiên trong thực tiễn, nếu một Bean có quá nhiều logic để khởi tạo và cấu hình, thì tất cả chúng ta sẽ sử dụng
Configuration và
Bean để tự tay tạo ra Bean. Việc tự tay tạo ra Bean như này có thể hiểu phần nào là tất cả chúng ta đang config cho chương trình.

Ví dụ

Chúng ta sẽ ví dụ với việc cấu hình kết nối tới Database. Đây vẫn là một ví dụ hết sức đơn giản.

Tạo ra một Abstract Class DatabaseConnector phụ trách kết nối tới Database.

DatabaseConnector.java

public abstract class DatabaseConnector { private String url; /** * Hàm này có nhiệm vụ Connect tới một Database bất kỳ */ public abstract void kết nối(); public String getUrl() { return url; } public void setUrl(String url) { this.url = url; }}Kế thừa class này có 3 class đại diện: MySqlConnector, PostgreSqlConnector, MongoDbConnector

MongoDbConnector.java

public class MongoDbConnector extends DatabaseConnector {
Override public void kết nối() { System.out.println(“Đã kết nối tới Mongodb: ” + getUrl()); }}MySqlConnector.java

public class MySqlConnector extends DatabaseConnector {
Override public void kết nối() { System.out.println(“Đã kết nối tới Mysql: ” + getUrl()); }}PostgreSqlConnector.java

public class PostgreSqlConnector extends DatabaseConnector{
Override public void kết nối() { System.out.println(“Đã kết nối tới Postgresql: ” + getUrl()); }}Tạo ra Bean trong AppConfig

AppConfig.java

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;
Configurationpublic class AppConfig {
Bean(“mysqlConnector”) DatabaseConnector mysqlConfigure() { DatabaseConnector mySqlConnector = new MySqlConnector(); mySqlConnector.setUrl(“jdbc:mysql://host1:33060/loda”); // Set username, password, format, 𝒱.𝒱… return mySqlConnector; }
Bean(“mongodbConnector”) DatabaseConnector mongodbConfigure() { DatabaseConnector mongoDbConnector = new MongoDbConnector(); mongoDbConnector.setUrl(“mongodb://mongodb0.example.com:27017/loda”); // Set username, password, format, 𝒱.𝒱… return mongoDbConnector; }
Bean(“postgresqlConnector”) DatabaseConnector postgresqlConfigure(){ DatabaseConnector postgreSqlConnector = new PostgreSqlConnector(); postgreSqlConnector.setUrl(“postgresql://localhost/loda”); // Set username, password, format, 𝒱.𝒱… return postgreSqlConnector; }}Chạy thử:

App.java

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;
SpringBootApplicationpublic class App { public static void main(String args) { ApplicationContext context = SpringApplication.run(App.class, args); DatabaseConnector mysql = (DatabaseConnector) context.getBean(“mysqlConnector”); mysql.kết nối(); DatabaseConnector mongodb = (DatabaseConnector) context.getBean(“mongodbConnector”); mongodb.kết nối(); DatabaseConnector postgresql = (DatabaseConnector) context.getBean(“postgresqlConnector”); postgresql.kết nối(); }}Output:

Đã kết nối tới Mysql: jdbc:mysql://host1:33060/lodaĐã kết nối tới Mongodb: mongodb://mongodb0.example.com:27017/lodaĐã kết nối tới Postgresql: postgresql://localhost/lodaChúng ta tạo ra DatabaseConnector phục vụ cho nhiều ngữ cảnh.

Bean có tham số

Nếu method được đánh dấu bởi
Bean có tham số truyền vào, thì Spring Boot sẽ tự inject các Bean đã có trong Context vào làm tham số.

Xem thêm: Hướng Dẫn Nạp Tiền Game Teen Teen, Game Di Dong Online, Game Mien Phi: Game Tenten

Ví dụ:

AppConfig.java

Configurationpublic class AppConfig {
Bean SimpleBean simpleBeanConfigure(){ // Khởi tạo một instance của SimpleBean và trả ra ngoài return new SimpleBean(“loda”); }
Bean(“mysqlConnector”) DatabaseConnector mysqlConfigure(SimpleBean simpleBean) { // SimpleBean được tự động inject vào. DatabaseConnector mySqlConnector = new MySqlConnector(); mySqlConnector.setUrl(“jdbc:mysql://host1:33060/” + simpleBean.getUsername()); // Set username, password, format, 𝒱.𝒱… return mySqlConnector; }}

Thực tế

Trong thực tiễn, việc sử dụng
Configuration là hết sức thiết yếu, và nó đóng vai trò là nơi cấu hình cho toàn thể ứng dụng của các bạn. Một Ứng dụng sẽ có nhiều class chứa
Configuration và mỗi class sẽ phụ trách cấu hình một phòng ban gì đó trong ứng dụng.

Ví dụ đây là một đoạn code cấu hình cho Spring Security

Configuration
EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {
Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers(“/”, “/home”).permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage(“/login”) .permitAll() .and() .logout() .permitAll(); }
Bean
Override public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username(“user”) .password(“password”) .roles(“USER”) .build(); return new InMemoryUserDetailsManager(user); }}

Kết

Đây là một nội dung trong Series làɱ chủ Spring Boot, từ zero to hero

Như mọi khi, code được up tại Github

Chia sẻ nội dung với bạn thân nữa nhé!
facebook google plus twitter
Phản hồi



Xoá phản hồi
Bỏ hay Hay

*


Hủy

Hiển thị thử

Chỉnh sửa

https://loda.me

48 nội dung.
52 người follow
Kipalog

Cùng một tác giả

14 0
Series hướng dẫn Spring Boot cơ bản, Zero to Hero
Java spring boot spring mvc spring core spring security
Vì sao chúng ta nên học Java? Trước khi nói Spring Boot, tất cả chúng ta nói về nền tảng của nó, chính là Java. Java ra đời năm 1991, tới nay thì đã gần 30 и…
https://loda.me viết hơn 1 năm trước
14 0

9 0
Tạι sao nêи họͼ Java và Spring?
Java spring spring boot spring mvc spring core spring security
Vì sao chúng ta nên học Java? Trước khi nói Spring Boot, tất cả chúng ta nói về nền tảng của nó, chính là Java. Java ra đời năm 1991, tới nay thì đã gần 30 и…
https://loda.me viết hơn 1 năm trước
9 0

8 0
「Spring」Hưσ̛́ng dẫи lậᴘ trình Spring căи bảи cho ngưσ̛̀ι mớι
Java spring boot spring security spring mvc spring
Xin chào toàn bộ các bạn, trước khi đi vào cụ thể bài ngày hôm nay, các bạn cần đọc cho mình các khái niệm sau: 1. Kháι niệɱ tightcoupling (liêи ƙ…
https://loda.me viết hơn 1 năm trước
8 0
4 0
Spring JPA fetch test
TIL spring spring boot spring jpa fetch
Ι used Spring boot, Hibernate few times back then at University, Ι’𝒱 started using it again recently. In this (Link), Ι want to test how Spring Ĵ…
Rey viết 2 năm trước
4 0
0 0
「Spring Boot #10」
RequestMapping+
PostMapping+
ModelAttribute+
RequestParam+Web To-Do Thymeleaf
Java spring spring boot spring mvc spring security spring core
Giới thiệu Trong bài ngày hôm nay tất cả chúng ta sẽ tìm hiểu cách handle request POST của Spring Boot. Trước đó, chúng ta nên biết 1. 「Spring Boot 8」Tạσ Web He…
https://loda.me viết hơn 1 năm trước
0 0

kipalog

phản hồi


https://loda.me

48 nội dung. 52 người follow

Đầu mục nội dung

Vẫn còn tiếp! Ҳ

Kipalog vẫn còn rất nhiều nội dung hay và đề tài thú vị chờ bạn tìm tòi!

Khám phá Đăng nhập
Điều khoản Phản hồi Yêu cầu Fanpage

Chuyên mục: Hỏi Đáp


Bài 4: Khái niệm IoC, DI (Dependency Injection) và Spring Bean trong Spring Framework


Lập trình Java 5 v2021 playlist: https://www.youtube.com/playlist?list=PLn9lhDYvf_3HZwLTxoWG4eDPFq2aVYTHC
Lập trình Spring Boot v2021 playlist: https://www.youtube.com/playlist?list=PLn9lhDYvf_3HS5RvfAfH4g1XHUN1gapFV
Fan Page: https://ift.tt/3FY66JG
Nhóm thảo luận: https://ift.tt/32ReSuV
SpringBoot_ProIT4All SpringBoot_Slide_ProIT4All SpringBoot Java5

Xem thêm nội dung thuộc thể loại: Hỏi Đáp
Xem thêm bài viết thuộc chuyên mục: Hỏi Đáp

The post Spring bean là gì spring bean là gì appeared first on Monrun.vn.



source https://monrun.vn/spring-bean-la-gi-spring-bean-la-gi/

Nhận xét

Bài đăng phổ biến từ blog này

Trang Tin Làm Đẹp Monrun

Sao la hầu là gì tốt hay xấu chiếu mệnh nam nữ tuổi nào năm 2021 sao la hầu là gì? sao la hầu tốt hay xấu, kỵ khắc màu gì?

Thiết bị ngoại vi là gì ? phân biệt thiết bị ngoại vi thiết bị ngoại vi là gì thiết bị ngoại vi là gì