1. IoC là gì?

IoC(Inversion of Control): Đảo ngược điều khiển, nó góp có tác dụng biến đổi luồng tinh chỉnh của chương trình một giải pháp linh hoạt.

Bạn đang xem: Ioc là gì

Thường sử dụng cùng với Denpendency Injection.

Các bạn có thể xem lại bài về Dependency Injection để hiểu rõ hơn: https://stackjava.com/design-pattern/dependency-injection-di-la-gi.html

2. Spring IoC

IoC Container là yếu tố thực hiện IoC.

Trong Spring, Spring Container (IoC Container) sẽ tạo nên những đối tượng người sử dụng, lắp rắp chúng lại cùng nhau, cấu hình những đối tượng người tiêu dùng và làm chủ vòng đời của chúng từ thời gian tạo nên cho tới thời điểm bị bỏ.

Spring container thực hiện DI nhằm thống trị những yếu tố, đối tượng người sử dụng để khiến cho 1 vận dụng. Các yếu tắc, đối tượng người tiêu dùng này Gọi là Spring Bean (bản thân sẽ nói đến Spring Bean trong số bài bác sau)

Để tạo thành đối tượng, cấu hình, đính thêm rắp chúng, Spring Container vẫn hiểu công bố từ bỏ các tệp tin xml và xúc tiến bọn chúng.

*

IoC Container trong Spring gồm 2 vẻ bên ngoài là:

BeanFactoryApplicationContext

Sự khác nhau thân BeanFactory cùng ApplicationContext:

BeanFactory và ApplicationContext đa số là những interface thực hiện IoC Container. ApplicationContext được desgin BeanFactory dẫu vậy nó gồm thêm một vài chức năng không ngừng mở rộng như tích hợp với Spring AOPhường., cách xử lý message, context cho website application.

Xem thêm: Jack Cao Bao Nhiêu - Tiểu Sử, Năm Sinh, Chiều Cao Jack (J97)

3. lấy ví dụ như cùng với BeanFactory cùng ApplicationContext.

3.1 BeanFactory

Để áp dụng Spring Bean ta bắt buộc khai báo thỏng 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); Để tạo thành đối tượng người dùng HelloWorld trải qua IoC container ta sẽ thông số kỹ thuật nó vào tệp tin beans.xml

Bây giờ ta sẽ tạo một BeanFactory nhằm đọc các biết tin thông số kỹ thuật với tạo nên đối tượng người tiêu dùng HelloWorl.

BeanFactory chỉ là một trong những interface, cần tại đây mình dùng DefaultListableBeanFactory, một implement của BeanFactory. Tại những version cũ thì các bạn sẽ thấy hay sử dụng XmlBeanFactory tuy vậy nó bị tấn công dấu 
Deprecated sống các version bắt đầu.

// tạo factoryDefaultListableBeanFactory factory = new DefaultListableBeanFactory();// gọi ban bố file thông số kỹ thuật và gán vào factoryXmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));//tạo thành đối tượng người dùng từ factoryHelloWorld obj = (HelloWorld) factory.getBean("helloWorld");obj.getMessage();Kết quả:

Print : Hello World!

3.2 Application Context

Để sử dụng Spring Bean ta buộc phải khai báo thỏng viện spring-context sau:

org.springframework spring-context 4.3.13.RELEASEMình sẽ khởi tạo đối tượng phức hợp rộng HelloWorl.java một ít.

lấy ví dụ như class DataResource.java đựng báo cáo liên kết cho tới database.

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); Để chế tạo ra đối tượng người sử dụng HelloWorld thông qua IoC container ta sẽ thông số kỹ thuật nó vào file applicationContext.xml (xem xét là bạn viết tên file là gì cũng được: bean.xml, applicationContext.xml, dataresource.xml... tuy nhiên cần phải ghi nhớ file thông số kỹ thuật mang lại mẫu gì)

Tạo một đối tượng ApplicationContext để đưa thông tin từ bỏ tệp tin cấu hình cùng tạo ra đối tượng người tiêu 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 giờ đồng hồ bạn có nhu cầu chuyển đổi messge trong đối tượng người tiêu dùng HelloWorld, xuất xắc database của người tiêu dùng chuyển đổi username/password xuất xắc các bạn đổi kết nối sang trọng database khác bạn chỉ cần thay đổi lại lên tiếng trong file config .xml là đang chuyển đổi được luồng chạy của công tác, đó đó là IoC.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *