1.Spring 有3中注入的方式.
1.1、构造器注入;
1.2、setter注入(最好);
1.3、注解方式注入
注入:就是给类的属性赋值
2.setter注入:先配置xml文件,spring框架启动后读取xml文件,通过bean的setter()方法完成属性赋值
例子 ;
java bean:
public User(String name,Integer age)
{ String name;
String age;
..............
}
xml配置文件:
<bean name="user" class="com.mr.user.User">
<property name="name" value="小强" />
<property name="age" value="20" />
</bean>
class表示要实例化的类名,<property>标签中name是属性名 value是属性的值
3.构造器注入:
java bean:
public User(String name,Integer age)
{ String name;
String age;
..............
}
xml配置文件:
<bean name="user" class="com.mr.user.User">
<constructor-arg value="小强"/>
<constructor-arg value="20" />
</bean>
<constructor-arg>标签为构造器传递参数,默认是按照顺序来传递参数
</constructor-arg>有2个属性type 和index>
type:对构造器的参数类型进行匹配,然后赋值
index,指定为构造器的哪一个属性赋值
4. spring 中id 和name的区别
<bean name="k" id="Hello">
.......
<bean>
相同点:都可以获得bean对象
不同点:id唯一,name可重复(比如不同的bean可能会有同样的name)
建议:尽量使用id
5.setter注入代码演示
5.1 代码结构
5.2 Main.java
package test1;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
static BeanFactory beanFactory=null;
static{
beanFactory=new ClassPathXmlApplicationContext("test1/test.xml");
}
public static void main(String [] args){
Person a=beanFactory.getBean("Person",Person.class);
a.personInfo();
}
}
5.3Person.java
package test1;
public class Person {
String name;
Integer age;
public Person() {
super();
}
public Person(String name,Integer age)
{
this.name=name;
this.age=age;
}
public void personInfo()
{
System.out.println("我的名字是"+name);
System.out.println("我的年龄是"+age.toString());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
5.4 test.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-3.0.xsd">
<bean id="Person" class="test1.Person">
<property name="name" value="张三"/>
<property name="age" value="20"/>
</bean>
</beans>