1. IoC là gì?
IoC(Inversion of Control): Đảo ngược tinh chỉnh, nó góp làm cho đổi khác luồng tinh chỉnh và điều khiển của công tác một bí quyết linh hoạt.
Bạn đang xem: Ioc là gì
Thường sử dụng với Denpendency Injection.
Các bạn có thể xem lại bài về Dependency Injection nhằm làm rõ hơn: https://stackjava.com/design-pattern/dependency-injection-di-la-gi.html
2. Spring IoC
IoC Container là yếu tố tiến hành IoC.
Trong Spring, Spring Container (IoC Container) sẽ tạo các đối tượng người dùng, gắn rắp bọn chúng lại với nhau, cấu hình các đối tượng người dùng cùng quản lý vòng đời của bọn chúng từ cơ hội tạo ra cho tới thời gian bị bỏ.
Spring container thực hiện DI nhằm thống trị những nhân tố, đối tượng nhằm làm cho 1 ứng dụng. Các yếu tắc, đối tượng này gọi là Spring Bean (bản thân vẫn nói tới Spring Bean trong số bài bác sau)
Để sinh sản đối tượng người dùng, thông số kỹ thuật, thêm rắp bọn chúng, Spring Container đang hiểu đọc tin tự các tệp tin xml và thực hiện chúng.
Tóm Tắt
IoC Container vào Spring bao gồm 2 hình trạng là:
BeanFactoryApplicationContext
Sự khác biệt thân BeanFactory cùng ApplicationContext:
BeanFactory với ApplicationContext số đông là những interface tiến hành IoC Container. ApplicationContext được xuất bản BeanFactory dẫu vậy nó gồm thêm một số tính năng không ngừng mở rộng nlỗi tích hợp với Spring AOPhường., giải pháp xử lý message, context cho website application.
Xem thêm: Bệnh Eczema Là Gì ? Có Nguy Hiểm Không? Cách Điều Trị Nguyên Nhân, Triệu Chứng Và Cách Phòng Ngừa
3. ví dụ như cùng với BeanFactory cùng ApplicationContext.
3.1 BeanFactory
Để áp dụng Spring Bean ta buộc phải knhì báo thư viện spring-bean sau:
org.springframework spring-beans 4.3.13.RELEASEClass HelloWorld.java
public class HelloWorld private String message; public void setMessage(String message) this.message = message; public void getMessage() System.out.println(“Print : ” + message); Để chế tác đối tượng người tiêu dùng HelloWorld trải qua IoC container ta đã cấu hình nó vào tệp tin beans.xml
Bây giờ ta sẽ khởi tạo một BeanFactory để đọc những thông tin thông số kỹ thuật và tạo ra đối tượng người dùng HelloWorl.
BeanFactory chỉ là 1 trong những interface, yêu cầu tại đây bản thân dùng DefaultListableBeanFactory, một implement của BeanFactory. Tại những version cũ thì các bạn sẽ thấy thường được sử dụng XmlBeanFactory tuy vậy nó bị đánh dấu
Deprecated làm việc các version bắt đầu.
// chế tạo factoryDefaultListableBeanFactory factory = new DefaultListableBeanFactory();// phát âm ban bố file thông số kỹ thuật với gán vào factoryXmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);reader.loadBeanDefinitions(new ClassPathResource(“beans.xml”));//chế tạo ra đối tượng trường đoản cú factoryHelloWorld obj = (HelloWorld) factory.getBean(“helloWorld”);obj.getMessage();Kết quả:
Print : Hello World!
3.2 Application Context
Để áp dụng Spring Bean ta yêu cầu knhì báo thỏng viện spring-context sau:
org.springframework spring-context 4.3.13.RELEASEMình sẽ tạo nên đối tượng phức tạp hơn HelloWorl.java một chút ít.
lấy ví dụ class DataResource.java cất thông tin liên kết tới database.
Xem thêm: Giao Dịch Forex Là Gì? ? Nên Bắt Đầu Từ Đâu? Forex Là Gì
public class DataResource private String driverClassName; private String url; private String username; private String password; public String getDriverClassName() return driverClassName; public void setDriverClassName(String driverClassName) this.driverClassName = driverClassName; public String getUrl() return url; public void setUrl(String url) this.url = url; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; public void printConnection() System.out.println(“url: ” + this.url + ”
” + “username/password: ” + this.username + “/” + this.password); Để tạo nên đối tượng HelloWorld trải qua IoC container ta đang thông số kỹ thuật nó trong tệp tin applicationContext.xml (xem xét là chúng ta đánh tên tệp tin là gì rồi cũng được: bean.xml, applicationContext.xml, dataresource.xml… tuy nhiên cần được lưu giữ tệp tin cấu hình mang đến mẫu gì)
Tạo một đối tượng người dùng ApplicationContext để lấy biết tin từ bỏ tệp tin thông số kỹ thuật và tạo thành đối tượng người dùng DataResource
public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”); DataResource obj = (DataResource) context.getBean(“dataResource”); obj.printConnection();Kết quả:
url: jdbc:mysql://localhost/database_nameusername/password: root/admin1234Done!
Bây tiếng bạn muốn biến hóa messge trong đối tượng người sử dụng HelloWorld, tuyệt database của chúng ta đổi khác username/password giỏi các bạn đổi liên kết sang trọng database không giống chúng ta chỉ việc thay đổi lại báo cáo vào tệp tin config .xml là đã đổi khác được luồng chạy của công tác, kia chính là IoC.
Chuyên mục: Hỏi đáp