Spring Bean Là Gì Trong Spring Boot? 69 Câu Hỏi Phỏng Vấn Về Spring (Phần 2)

      194

Spring IoC

Nlỗi bài xích trước, với Dependency Injection thì các đối tượng vẫn không thể nhờ vào vào nhau. Khi bắt buộc đối tượng người sử dụng này vẫn gọi cho tới đối tượng người tiêu dùng tê với ngược trở lại. Vây các đối tượng sẽ được tạo thành cùng nằm ở chỗ nào nhằm lúc buộc phải chúng hoàn toàn có thể Call lẫn nhau. Câu vấn đáp là những đối tượng được đặt trong một form cất, cùng form đựng đó chính là một phần của IoC.quý khách đã xem: Spring bean là gì

Spring Ioc là 1 trong lý lẽ nhằm đã có được tứ tưởng loose-coupling trong Objects dependencies. Đây là tư tưởng nhưng mà các nguyên tố thao tác làm việc độc lập với nhau. Dể đã đạt được tư tưởng này tương tự như câu hỏi binding các object một cách linch hoạt tại runtime, Objects dependencies được inject bởi các object ghép khác. Spring IoC container là lịch trình chất nhận được inject dependency vào một trong những object cùng để cho sẵn sàng chuẩn bị và để được thực hiện.

Bạn đang xem: Spring Bean Là Gì Trong Spring Boot? 69 Câu Hỏi Phỏng Vấn Về Spring (Phần 2)

Spring IoC container classes là thành phần của org.springframework.beans và org.springframework.context. Spring IoC container cung ứng đến họ rất nhiều cách để decouple các đối tượng người sử dụng dependencies.

BeanFactory là root interface của Spring IoC container. ApplicationContext là child interface của BeanFactory interface - cung cấp giải pháp tính năng Spring AOP, i18n v.v...

Một trong các các interfaces bé có lợi của ApplicationContext đó là ConfigurableApplicationContext với WebApplicationContext. Spring Framework cung cấp không hề ít các class implement ApplicationContext cơ mà bạn có thể thực hiện để có thể đem được spring context cùng Spring Bean.

Một vài ba implementations vô cùng hữu dụng của ApplicationContext implementations nhưng mà họ sẽ tốt dùng :

AnnotationConfigApplicationContext: Nếu bọn họ sử dụng Spring trong những áp dụng java hòa bình và áp dụng annotations mang lại câu hỏi cấu hình, thì bạn có thể thực hiện nó để có thể tạo container và mang các đối tượng bean.ClassPathXmlApplicationContext: Nếu họ bao gồm spring been config xml file vào ứng dụng tự do, thì rất có thể thực hiện class này để load file với rước containter object.FileSystemXmlApplicationContext: Tương từ bỏ cùng với ClassPathXmlApplicationContext trừ câu hỏi tệp tin xml configuration rất có thể dược load từ bỏ bất kỳ chỗ nào vào khối hệ thống.AnnotationConfigWebApplicationContext và XmlWebApplicationContext cho các vận dụng web.

Đôi khi, nếu như bạn thao tác cùng với vận dụng Spring MVC và ứng dụng được config để thực hiện Spring Framework, Spring IoC container cũng biến thành được khởi sinh sản Lúc application start và lúc 1 bean được request, dependencies được auto inject.

Tuy nhiên đối với những áp dụng chủ quyền, bạn cần phải khởi sản xuất container ở ở đâu đó trong application và tiếp nối sử dụng nó để đưa spring beans.

Spring Bean

Spring Bean is nothing special, any object in the Spring framework that we initialize through Spring container is called Spring Bean . Any normal Java POJO class can be a Spring Bean if it’s configured lớn be initialized via container by providing configuration metadata information.

Spring Bean không có gì quan trọng, ngẫu nhiên object nào trong Spring framework mà họ khởi tạo thành thông qua Spring container được Điện thoại tư vấn là Spring Bean. Bất kỳ class Java POJO thường thì nào cũng hoàn toàn có thể là Spring Bean nếu nó được cấu hình để có thể tạo trải qua container bằng cách báo tin metadata thông số kỹ thuật.

Spring Bean Scopes

Có 5 scope tư tưởng cho Spring Beans.

singleton – Chỉ 1 instance của bean được tạo nên trong mỗi container. Đây là scope mặc định mang lại spring beans. Lúc sử dụng scope này, đảm bảo an toàn rằng bearn ko giới thiệu instance ví như ko nó đang dìm cho sự việc bất ổn vào tài liệu.prototype – Một instance mới sẽ được tạo nên các lần bean được request.request – Khá tương đương prototype scope, tuy nhiên nó được áp dụng cho áp dụng web. Một instance bắt đầu của bean sẽ tiến hành sinh sản cho mỗi HTTP request.session – Một bean mới sẽ được tạo thành cho mỗi HTTP.. session do container.global-session – Cái này được thực hiện để chế tác các global session beans cho các áp dụng Portlet.Spring Framework có công dụng không ngừng mở rộng được với bạn có thể tạo scope riêng biệt nếu ham mê, mặc dù, phần nhiều phần nhiều thời điểm thì những scope được cung ứng vày framework là thừa đầy đủ rồi.

Spring Bean Configuration

Spring Framework provide three ways to lớn configure beans khổng lồ be used in the application.

Hãy quan lại liền kề một mặt khác của Spring IoC container và Spring Bean configurations với cùng 1 dự án Spring đơn giản.lấy ví dụ, tôi sản xuất một dự án công trình Spring MVC project vào Spring Tool Suite.Cấu trúc dự án công trình đã trông như vậy này.

Xem thêm: Quần Jeans Ống Côn Là Gì ? Quần Ống Côn Nam Nữ Và Cách Phối Chuẩn Gu


*

https://gocnhintangphat.com/spring-bean-la-gi/imager_1_11236_700.jpg)

Tiếp hãy quan tiền cạnh bên các nhân tố biệt lập của Spring IoC với Spring Bean project.

XML Based Spring Bean Configuration

MyBean là một trong class Java POJO đối chọi giản

package com.journaldev.spring.beans;public class MyBean private String name;public String getName() return name;public void setName(String name) this.name = name;

Spring Configuration XML File

servlet-context.xml code:

Chú ý rằng MyBean được config bằng cách áp dụng bean element cùng với scope là singleton.

Annotation Based Spring Bean Configuration

package com.journaldev.spring.beans;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Service;import org.springframework.website.context.WebApplicationContext;Scope(WebApplicationContext.SCOPE_REQUEST)public class MyAnnotatedBean private int empId;public int getEmpId() return empId;public void setEmpId(int empId) this.empId = empId;MyAnnotatedBean được config áp dụng Service với scope là Request.

Spring IoC Controller Class

Class HomeController vẫn xử trí những request HTTP đến home page. Chúng ta đang inject Spring beans vào class controller này thông qua WebApplicationContext container.

package com.journaldev.spring.controller;import java.text.DateFormat;import java.util.Date;import java.util.Locale;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.website.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.journaldev.spring.beans.MyAnnotatedBean;import com.journaldev.spring.beans.MyBean;Scope("request")public class HomeController private MyBean myBean;private MyAnnotatedBean myAnnotatedBean;Autowiredpublic void setMyAnnotatedBean(MyAnnotatedBean obj) this.myAnnotatedBean = obj;/** * Simply selects the trang chính view lớn render by returning its name. */RequestMapping(value = "/", method = RequestMethod.GET)public String home(Locale locale, Model model) System.out.println("MyBean hashcode="+myBean.hashCode());System.out.println("MyAnnotatedBean hashcode="+myAnnotatedBean.hashCode());Date date = new Date();DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);String formattedDate = dateFormat.format(date);model.addAttribute("serverTime", formattedDate );return "home";

Deployment Descriptor

Chúng ta đề nghị config vận dụng cho Spring Framework nhằm configuration metadata sẽ được load cùng context được khởi chế tạo.

contextConfigLocation/WEB-INF/spring/root-context.xmlorg.springframework.web.context.ContextLoaderListenerappServletorg.springframework.website.servlet.DispatcherServletcontextConfigLocation/WEB-INF/spring/appServlet/servlet-context.xml1appServlet/Hầu hết các config sống trên là boiler-plate code được gene vày tool STS tool một biện pháp tự động hóa.

Run the Spring IoC Bean Example Application

Bây tiếng, khi chúng ta chạy vận dụng website, trang chủ page sẽ tiến hành load cùng console logs đang hiển thị các báo cáo nếu như khách hàng refresh page những lần.

MyBean hashcode=118267258MyAnnotatedBean hashcode=1703899856MyBean hashcode=118267258MyAnnotatedBean hashcode=1115599742MyBean hashcode=118267258MyAnnotatedBean hashcode=516457106Crúc ý rằng MyBean được config là singleton, cho nên container vẫn luôn luôn luôn được trả về và một instance và một. Tương từ bỏ cho từng request, một instance của MyAnnotatedBean được sinh sản với hashcode khác biệt.

Java Based Spring Bean Configuration

Với những vận dụng hòa bình, bạn có thể áp dụng config dựa vào annotation hoặc xml. Cả 2 những ổn. Yêu cầu duy nhất là khởi tạo thành context trong lịch trình ngơi nghỉ vị trí mà lại bọn họ đang buộc phải nhằm áp dụng nó.

package com.journaldev.spring.main;import java.util.Date;public class MyService public void log(String msg)System.out.println(new Date()+"::"+msg);MyService là một class java dễ dàng và đơn giản với cùng 1 vài ba method.

package com.journaldev.spring.main;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;Beanpublic MyService getService()return new MyService();}Config class dựa vào annotation sẽ tiến hành sử dụng để tạo Spring container.

Khi chúng ta chạy ứng dụng ở trên, console đã hiển thị như sau

Sat Dec 28 22:49:18 PST 2013::Hiservice hashcode=678984726newService hashcode=678984726Nếu bạn muốn config dựa vào XML, chỉ cần tạo thành file config Spring XML cùng khởi chế tác context với đoạn code snippet nhỏng sau.

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); MyService app = context.getBean(MyService.class);

Nguồn

http://www.journaldev.com/2461/spring-ioc-bean-example-tutorial