目录
1.spring DI
IOC:控制反转 创建对象!
DI:依赖注入:目的就是给对象中的属性赋值。
依赖注入的类型有哪些:
基本数据类型, 字符串类型,引用类型,集合类型。
2.如何实现注入对象的属性值
(1)创建一个类:---提供set方法
public class Student {
private Integer age;
private String name;
private Clazz clazz;
private List<String> hobby;
private Integer[] sex;
private Set<String> set;
private Map<String ,String> map;
public Set<String> getSet() {
return set;
}
public void setSet(Set<String> set) {
this.set = set;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
", clazz=" + clazz +
", hobby=" + hobby +
", sex=" + Arrays.toString(sex) +
", set=" + set +
", map=" + map +
'}';
}
public List<String> getHobby() {
return hobby;
}
public void setHobby(List<String> hobby) {
this.hobby = hobby;
}
public Integer[] getSex() {
return sex;
}
public void setSex(Integer[] sex) {
this.sex = sex;
}
public Clazz getClazz() {
return clazz;
}
public void setClazz(Clazz clazz) {
this.clazz = clazz;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)配置文件:---在bean标签中<property name="属性名" >
1.注入类对象类型
2.注入集合类型、注入set和map集合
代码展示:
<?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">
<bean id="student01" class="com.qy151wd.demo.Student">
<!--property:表示为类中属性注入值,调用的为set方法
name:表示属性名
value:注入基本类和字符串类型时使用value
ref:注入的为类以及接口对象类型。引入其他bean的id
-->
<property name="age" value="56"/>
<property name="name" value="张三"/><!--value是Integer和String类型使用-->
<property name="clazz" ref="clazz02"/><!--ref引用类型使用-->
<!--list允许重复-->
<property name="hobby">
<list>
<value>睡觉</value>
<value>吃饭</value>
<value>玩游戏</value>
</list>
</property>
<property name="sex">
<array>
<value>0</value>
<value>1</value>
<value>2</value>
</array>
</property>
<!--不允许重复-->
<property name="set">
<set>
<value>abc</value>
<value>abc</value>
<value>def</value>
<value>gkh</value>
</set>
</property>
<property name="map">
<map>
<entry key="name" value="张三"/>
<entry key="age" value="15"/>
<entry key="sex" value="男"/>
</map>
</property>
</bean>
<bean id="clazz01" class="com.qy151wd.demo.Clazz">
<property name="cId" value="1"/>
<property name="cName" value="qy151"/>
</bean>
<bean id="clazz02" class="com.qy151wd.demo.Clazz">
<property name="cId" value="2"/>
<property name="cName" value="qy155"/>
</bean>
</beans>
3.自动注入
3.1、通过xml配置实现自动注入
<?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">
<bean id="controller" class="com.qy151wd.demo02.UserController" autowire="byName"/>
<bean id="userDao01" class="com.qy151wd.demo02.UserDao01"/>
</beans>
autowire属性有两种方式:
- byName:通过对应中的变量名来找xml对应的id与变量名相同的bean
- byType: 只要是该类或是子类都可以找到,但是有多个会有歧义性,报错。
3.2 注释
下面几个注释都可以把类加到xml中,并添加相应的bean:
- @Service
- @Repository
- @Controller
- @Component
前三个基本没区别,本质上还是调用的@Component注解。
但是要注意需要让springmvc配置文件能扫描到注释。