Spring的IOC和DI(案例+解析)
程序员文章站
2023-12-09 20:03:09
IOC和DI1、IOC:控制反转,将对象的控制权,反转给Spring。(1)DI:依赖注入,前提必须要有IOC的环境(也就是将对象交给了Spring),Spring在管理这个类的时候,将类的依赖的属性注入(设置)进来。将类交给对应的Spring之后,可以使用该类也可以设置其属性,在Spring配置文件当中...
IOC和DI
1、IOC:控制反转,将对象的控制权,反转给Spring。
(1)DI:依赖注入,前提必须要有IOC的环境(也就是将对象交给了Spring),Spring在管理这个类的时候,将类的依赖的属性注入(设置)进来。
将类交给对应的Spring之后,可以使用该类也可以设置其属性,在Spring配置文件当中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Spring入门的配置 -->
<!-- id:接口的名称 class:实现类全路径 就将这个类交给Spring管理了 -->
<bean id="userDao" class="com.itzheng.spring.demo1.UserDaoImpl">
<property name="name" value="张三"></property>
</bean>
</beans>
package com.itzheng.spring.demo1;
/*
* 用户管理的业务层实现类
*/
public class UserDaoImpl implements UserDao {
private String name;
public void setName(String name) {
this.name = name;
}
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("UserService执行了。。。" + name);
}
}
package com.itzheng.spring.demo1;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*
* Spring的入门
*/
public class SpringDemo1 {
@Test
/*
* 传统方式的调用
*/
public void demo1() {
UserDaoImpl userdao = new UserDaoImpl();
userdao.setName("李四");
userdao.save();
}
@Test
//Spring的方式的调用
public void demo2() {
//创建Spring的工厂(参数是配置文件XML的名称)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过工厂,解析XML,反射对应类名称,活动对应的对象
UserDao userdao = (UserDao)applicationContext.getBean("userDao");
userdao.save();
}
}
运行demo2
2、面向对象的时候(关系)
(1)依赖
class A{
}
class B{
public void xxx(A a){
}
}
B 依赖了 A
(2)继承 is a
class A {
}
class B extends A {
}
B 继承了 A
(3)聚合:has a
松散
紧密
维护代码重用性。
要理解这一点,请再次使用相同的示例。假设还有另外两个类College和Staff以及上面两个类Student和Address。为了保持学生的地址,学院地址和工作人员的地址,我们不需要一次又一次地使用相同的代码。
我们只需要在定义每个类时使用Address类的引用
class Address
{
int streetNum;
String city;
String state;
String country;
Address(int street, String c, String st, String coun)
{
this.streetNum=street;
this.city =c;
this.state = st;
this.country = coun;
}
}
class StudentClass
{
int rollNum;
String studentName;
//Creating HAS-A relationship with Address class
Address studentAddr;
StudentClass(int roll, String name, Address addr){
this.rollNum=roll;
this.studentName=name;
this.studentAddr = addr;
}
public static void main(String args[]){
Address ad = new Address(55, "Agra", "UP", "India");
StudentClass obj = new StudentClass(123, "Chaitanya", ad);
System.out.println(obj.rollNum);
System.out.println(obj.studentName);
System.out.println(obj.studentAddr.streetNum);
System.out.println(obj.studentAddr.city);
System.out.println(obj.studentAddr.state);
System.out.println(obj.studentAddr.country);
}
}
本文地址:https://blog.csdn.net/qq_44757034/article/details/107070872
推荐阅读
-
Spring的IOC和DI(案例+解析)
-
Spring的IOC和DI(案例+解析)
-
spring5 源码深度解析----- 事务的回滚和提交(100%理解事务)
-
利用递归,反射,注解等,手写Spring Ioc和Di 底层(分分钟喷倒面试官)了解一下
-
Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
-
Spring:Ioc和DI
-
spring.net中的IoC、DI和MVC
-
SSM-Spring-1(IoC配置和DI)
-
spring源码深度解析— IOC 之 开启 bean 的加载
-
Spring学习笔记第二天,Spring基于xml或注解的IOC以及IOC的案例