Spring注入方式
1、建立文件
1.1、cat类
public class Cat {
public void shout() {
System.out.println("miaomiaomiao~");
}
}
1.2、dog类
public class Dog {
public void shout() {
System.out.println("wangwangwang~");
}
}
1.3、Person类
public class Person {
private Dog dog;
private Cat cat;
private String name;
Person(){
}
Person(String name){
this.name = name;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1.4、MyTest类客户端代码
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
Person person = context.getBean("person", Person.class);
person.getCat().shout();
person.getDog().shout();
}
}
1.5、ApplicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.bubaiwantong.CP.Dog"/>
<bean id="cat" class="com.bubaiwantong.CP.Cat"/>
<!--1、传统方式注入-->
<bean id="person" class="com.bubaiwantong.CP.Person">
<property name="name" value="小明"/>
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
</bean>
</beans>
2、C命名空间注入
这里的C代表的Constructor,比一般的注入少许多代码。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.bubaiwantong.CP.Dog"/>
<bean id="cat" class="com.bubaiwantong.CP.Cat"/>
<!--2、c命名空间注入-->
<bean id="person" class="com.bubaiwantong.CP.Person" c:name="小明"/>
</beans>
3、P命名空间注入
这里的P是Properties的简写,和C命名空间类似,这俩这种方式都是为了简化代码。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.bubaiwantong.CP.Dog"/>
<bean id="cat" class="com.bubaiwantong.CP.Cat"/>
<!--2、p命名空间注入-->
<bean id="person" class="com.bubaiwantong.CP.Person" p:name="小明" p:cat-ref="cat" p:dog-ref="dog"></bean>
</beans>
4、autowired的自动注入
4.1、ByName注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.bubaiwantong.CP.Dog"/>
<bean id="cat" class="com.bubaiwantong.CP.Cat"/>
<!--autowired注入,通过name注入,要求对象名唯一,否则会报错-->
<bean id="person" class="com.bubaiwantong.CP.Person" autowire="byName"/>
</beans>
4.2、ByType注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.bubaiwantong.CP.Dog"/>
<bean id="cat" class="com.bubaiwantong.CP.Cat"/>
<!--autowired注入,通过name注入,要求对象名唯一,否则会报错-->
<bean id="person" class="com.bubaiwantong.CP.Person" autowire="byType"/>
</beans>