idea-Spring框架与ioc容器
Sping是轻量级的开源J2EE框架,可以解决企业应用开发的复杂性
Spring有两个核心部分为Ioc和AOP
Ioc:控制反转,吧创建对象过程交给Sping进行管理
AOP:面向切面,不修改代码进行功能增强
创建Maven项目
IDEA-2024 就直接创建java项目即可
创建完成项目后需要在pom.xml文件中添加依赖这里我提了我使用的项目依赖,如果下载失败可以尝试自己安装maven然后将仓库设置为阿里云中央仓库
org.springframework spring-context 5.3.24 org.springframework spring-aspects 5.3.24 junit junit 4.12
Sping框架基础就配置好了
IOC底层实现
xml解析
工厂模式
反射技术
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
Sping提供了Ioc容器的两种实现方式(两个接口)
BeanFactory和APPlicationContext
ioc操作Bean管理
Bean管理是指
Sping创建对象
Spirng注入对象
public class User{
private String userName;
public void setUserName(String userName){
this.userName=userName;
}
}
Sping 一般使用自动注入如果你的xml配置没有出错那么你在项目中的
src/test/java右键新建就会出现xml文件,如果没有就是你的 pom.xml文件没有设置好
这是我的c1文件
package com.zk;
public class c1 {
private String f2;
public c1() {
}
public c1(String f2) {
this.f2 = f2;
}
public void f1(){
System.out.println("adsfasdf"+f2);
}
public void setF2(String f2){
this.f2 = f2;
}
}
他还有很多别的注入方式
构造函数注入
这是集合注入
1 2 3 1 2 3
package com.zk; import java.util.List; import java.util.Map; public class jh { private int x; private String[] y; private List z; private Map w; public void setX(int x) { this.x = x; } public void setZ(List z) { this.z = z; } public void setW(Map w) { this.w = w; } public void setY(String[] x) { this.y = x; } public void g (){ System.out.println(x+","+y+","+z+","+w); } }
此处为我的jh文件
自动注入
这里我自动注入了我的dao类
刚才的方法方法过于麻烦这里我们使用另外的方式
注解
注解是一种特殊的代码标记
@注解名(属性名 = 属性值)
<!--注解的代码 -->
@Autowired根据属性类型进行自动装配
@Qualifier根据属性名称进行注入需要和 @Autowired一起使用
@Resource可以根据类型和名称注入
@value根据普通类型注入
package com.zk.dao.img; import com.zk.dao.a1dao; import com.zk.dao.sev; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @Component public class uu implements sev { private a1dao dao; @Autowired @Qualifier(value = "aa1") public void adda1dap(a1dao dao){ this.dao=dao; } @Override public void acc() { dao.cc(); } }
package com.zk.dao.img; import com.zk.dao.a1dao; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; @Component public class aa1 implements a1dao { @Override public void cc() { System.out.println(123); } }
这样即可完成自动注入