Spring IoC
Nhỏng bài trước, với Dependency Injection thì những đối tượng người sử dụng đang không hề nhờ vào sát vào nhau. lúc bắt buộc đối tượng người tiêu dùng này đang call cho tới đối tượng người sử dụng tê với ngược trở lại. Vây những đối tượng người tiêu dùng sẽ được tạo nên với ở ở chỗ nào để lúc yêu cầu bọn chúng có thể Hotline lẫn nhau. Câu vấn đáp là các đối tượng người tiêu dùng được đặt trong một size cất, cùng form đựng đó chính là một phần của IoC.Quý khách hàng vẫn xem: Spring bean là gì
Spring Ioc là một phương pháp để có được tư tưởng loose-coupling trong Objects dependencies. Đây là bốn tưởng nhưng các yếu tắc làm việc hòa bình với nhau. Dể đã có được bốn tưởng này cũng tương tự việc binding những object một cách linc hoạt tại runtime, Objects dependencies được inject bởi vì những object ghép khác. Spring IoC container là lịch trình được cho phép inject dependency vào trong 1 object cùng làm cho sẵn sàng chuẩn bị sẽ được sử dụng.quý khách đang xem: Spring bean là gì
Spring IoC container classes là nguyên tố của org.springframework.beans với org.springframework.context. Spring IoC container cung cấp đến chúng ta không ít cách để decouple các đối tượng người dùng dependencies.
Bạn đang xem: Spring bean là gì
BeanFactory là root interface của Spring IoC container. ApplicationContext là child interface của BeanFactory interface - cung cấp giải pháp chức năng Spring AOP, i18n v.v...
Một trong những các interfaces nhỏ hữu ích của ApplicationContext đó là ConfigurableApplicationContext cùng WebApplicationContext. Spring Framework cung ứng tương đối nhiều các class implement ApplicationContext mà bạn cũng có thể áp dụng để có thể rước được spring context với Spring Bean.
Một vài ba implementations siêu có ích của ApplicationContext implementations cơ mà họ vẫn tốt sử dụng :
AnnotationConfigApplicationContext: Nếu bọn họ áp dụng Spring trong những vận dụng java hòa bình cùng sử dụng annotations đến Việc thông số kỹ thuật, thì chúng ta cũng có thể áp dụng nó để có thể tạo container cùng mang những đối tượng bean.ClassPathXmlApplicationContext: Nếu họ tất cả spring been config xml tệp tin vào ứng dụng tự do, thì rất có thể sử dụng class này để load file và mang containter object.FileSystemXmlApplicationContext: Tương trường đoản cú cùng với ClassPathXmlApplicationContext trừ Việc tệp tin xml configuration rất có thể dược load từ ngẫu nhiên ở đâu vào hệ thống.AnnotationConfigWebApplicationContext và XmlWebApplicationContext cho những vận dụng web.Đôi khi, nếu khách hàng thao tác cùng với vận dụng Spring MVC cùng áp dụng được config nhằm sử dụng Spring Framework, Spring IoC container cũng sẽ được khởi chế tác Khi application start cùng khi 1 bean được request, dependencies được tự động hóa inject.
Tuy nhiên đối với những vận dụng tự do, bạn phải khởi sinh sản container ngơi nghỉ nơi nào đó vào application với tiếp đến thực hiện nó để lấy 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 to be initialized via container by providing configuration metadata information.
Spring Bean không có gì đặc trưng, ngẫu nhiên object làm sao trong Spring framework nhưng mà chúng ta khởi chế tác 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ường nào thì cũng hoàn toàn có thể là Spring Bean nếu như nó được thông số kỹ thuật để có thể tạo thông qua container bằng phương pháp cung cấp tin metadata thông số kỹ thuật.
Spring Bean Scopes
Có 5 scope định nghĩa mang đến Spring Beans.
singleton – Chỉ 1 instance của bean được chế tạo ra trong những container. Đây là scope default mang lại spring beans. lúc thực hiện scope này, bảo vệ rằng bearn không giới thiệu instance trường hợp ko nó đã dấn cho vấn đề bất ổn vào dữ liệu.prototype – Một instance mới sẽ tiến hành sinh sản mỗi lần bean được request.request – Khá như là prototype scope, mặc dù nó được áp dụng mang đến áp dụng website. Một instance bắt đầu của bean sẽ tiến hành tạo nên cho từng HTTP. request.session – Một bean mới sẽ tiến hành sản xuất cho mỗi HTTP session vị container.global-session – Cái này được áp dụng nhằm tạo những global session beans cho các vận dụng Portlet.Spring Framework có công dụng không ngừng mở rộng được và chúng ta cũng có thể tạo scope riêng ví như thích, mặc dù, phần nhiều đều thời khắc thì các scope được hỗ trợ vì chưng framework là vượt đủ rồi.Spring Bean Configuration
Spring Framework provide three ways khổng lồ configure beans to be used in the application.
Xem thêm: Hướng Dẫn Tạo Ảnh Gif Nhanh Chóng Với Giphy Là Gì Và Sử Dụng Gif Như Thế Nào?

https://aviarus-21.com/spring-bean-la-gi/imager_1_3928_700.jpg)
Tiếp hãy quan liêu sát các yếu tố khác hoàn toàn của Spring IoC với Spring Bean project.
XML Based Spring Bean Configuration
MyBean là 1 trong những class Java POJO solo 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 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 sử dụng Service với scope là Request.
Spring IoC Controller Class
Class HomeController đang cách xử lý các request HTTPhường mang lại home page page. Chúng ta đã inject Spring beans vào class controller này trải 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.website.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 home view to 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 phải config ứng dụng mang đến Spring Framework nhằm configuration metadata sẽ được load cùng context được khởi sản xuất.contextConfigLocation/WEB-INF/spring/root-context.xmlorg.springframework.web.context.ContextLoaderListenerappServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocation/WEB-INF/spring/appServlet/servlet-context.xml1appServlet/Hầu không còn những config ở bên trên là boiler-plate code được gen bởi tool STS tool một phương pháp tự động.
Run the Spring IoC Bean Example Application
Bây tiếng, khi bạn chạy ứng dụng web, home page sẽ tiến hành load với console logs sẽ hiển thị những thông báo nếu như khách hàng refresh page các lần.
MyBean hashcode=118267258MyAnnotatedBean hashcode=1703899856MyBean hashcode=118267258MyAnnotatedBean hashcode=1115599742MyBean hashcode=118267258MyAnnotatedBean hashcode=516457106Crúc ý rằng MyBean được config là singleton, do đó container sẽ luôn luôn luôn được trả về và một instance với một. Tương từ cho từng request, một instance của MyAnnotatedBean được chế tạo ra với hashcode khác biệt.
Java Based Spring Bean Configuration
Với những vận dụng chủ quyền, chúng ta cũng có thể áp dụng config dựa vào annotation hoặc xml. Cả 2 đầy đủ ổn. Yêu cầu tốt nhất là khởi tạo context trong công tác ở chỗ mà lại họ vẫn 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 đơn giản dễ dàng với cùng một vài method.
lúc bọn họ chạy áp dụng sống bên trên, console vẫn hiển thị nlỗi 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ỉ việc sinh sản file config Spring XML với khởi tạo context với đoạn code snippet nlỗi sau.
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); MyService phầm mềm = context.getBean(MyService.class);