初识 Spring(03)---(XML注入方式 / 注入类型)

简介: XML注入方式1.set 方式注入  2.构造方式注入  3.工厂方式注入set 方式注入1.ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.

XML注入方式

1.set 方式注入  2.构造方式注入  3.工厂方式注入

set 方式注入

1.ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

2.public class UserDaoImpl implements UserDao;

3.private UserDao dao;

ClassPathXmlApplicationContext 创建了一个 spring 容器后,产生  UserDao 和 dao  对象,并且将 UserDao对象 设置到 dao 对象的属性中,这是通过 set 方法设置的

文件目录:

代码:配置文件: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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<bean id="userDao" class="com.neuedu.dao.impl.UserDaoImpl"></bean>
	<bean id="userService" class="com.neuedu.service.UserService">
	<!-- set方法注入 -->
		<property name="dao" ref="userDao"></property>
	</bean>
</beans>
 

Test.java

package com.neuedu.test;
import com.neuedu.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {

	public static void main(String[] args) {
		
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		//UserService us= (UserService)ac.getBean("userService");
		
	}
 
}

UserDaoImpl.java

package com.neuedu.dao.impl;
import com.neuedu.dao.UserDao;
public class UserDaoImpl implements UserDao{
	public UserDaoImpl() {
		System.out.println("UserDaoImpl构造方法...");
	}
	
	public void save() {
		System.out.println("通过oracle数据库将用户信息保存到数据库中");
	}
	
	
}

UserService.java

package com.neuedu.service;
import com.neuedu.dao.UserDao;
import com.neuedu.dao.impl.UserDaoImpl;
public class UserService {
	
	public UserService() {
		System.out.println("UserService 构造方法..."); 
	}
	private UserDao dao;
	
	public void save() {
		dao.save();
		
		
		
	}

	public void setDao(UserDao dao) {
		System.out.println("setUserDao...");
		this.dao = dao;
	}
}
 

UserDao.java

package com.neuedu.dao;

public interface UserDao {
	 public void save();
}

输出:

构造器方式注入(必须有带参数的构造方法才可以)

代码:配置文件: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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<bean id="userDao" class="com.neuedu.dao.impl.UserDaoImpl"></bean>
	<bean id="userService" class="com.neuedu.service.UserService">
	<!-- set方法注入 -->
		<!-- <property name="dao" ref="userDao"></property> -->
		<!-- 构造方法注入 -->
		<constructor-arg ref="userDao"></constructor-arg>
	</bean>
</beans>
 

UserService.java

package com.neuedu.service;
import com.neuedu.dao.UserDao;
import com.neuedu.dao.impl.UserDaoImpl;
public class UserService {
	private UserDao dao;
	public UserService() {
		System.out.println("UserService 构造方法..."); 
	}
	public UserService(UserDao dao) {
		System.out.println("带参数的UserService");
		this.dao = dao;
	}	
	public void save() {
		dao.save();	
	}
	public void setDao(UserDao dao) {
		System.out.println("setUserDao...");
		this.dao = dao;
	}
}
 

输出:

XML注入类型

1.简单属性  2. 对象  3.集合

简单属性

文件目录:

代码:配置文件: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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<bean id="userDao" class="com.neuedu.dao.impl.UserDaoImpl"></bean>
	<bean id="userService" class="com.neuedu.service.UserService">
	<!-- set方法注入 -->
		<!-- <property name="dao" ref="userDao"></property> -->
		<!-- 构造方法注入 -->
		<constructor-arg ref="userDao"></constructor-arg>
	</bean>
	<bean id="person" class="com.neudeu.po.Person">
		<property name="name" value="zhang"></property>
		<property name="age" value="30"></property>
	</bean>
</beans>
 

Test.java

package com.neuedu.test;
import com.neudeu.po.Person;
import com.neuedu.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {

	public static void main(String[] args) {
		
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		//UserService us= (UserService)ac.getBean("userService");
		Person person = ac.getBean(Person.class);
		System.out.println(person);
	}
 
}

Person.java

package com.neudeu.po;

public class Person {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

输出:

集合

文件目录:

代码:配置文件: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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<bean id="userDao" class="com.neuedu.dao.impl.UserDaoImpl"></bean>
	<bean id="userService" class="com.neuedu.service.UserService">
	<!-- set方法注入 -->
		<!-- <property name="dao" ref="userDao"></property> -->
		<!-- 构造方法注入 -->
		<constructor-arg ref="userDao"></constructor-arg>
	</bean>
	<bean id="FLL" class="com.neudeu.po.Car">
		<property name="brand" value="法拉利"></property>
		<property name="price" value="3000000"></property>
	</bean>
	
	<bean id="BW" class="com.neudeu.po.Car">
		<property name="brand" value="宝马"></property>
		<property name="price" value="300000"></property>
	</bean>
	
	<bean id="BYD" class="com.neudeu.po.Car">
		<property name="brand" value="比亚迪"></property>
		<property name="price" value="30000"></property>
	</bean>
	
	<bean id="person" class="com.neudeu.po.Person">
		<property name="name" value="zhang"></property>
		<property name="age" value="30"></property>
		<property name="cars">
			<list>
				<ref bean="FLL"/>
				<ref bean="BW"/>
				<ref bean="BYD"/>
			</list>
		</property>
	</bean>
</beans>
 

Person.java

package com.neudeu.po;

import java.util.List;

public class Person {
	private String name;
	private int age;
	
	private List<Car> cars;
	
	public List<Car> getCars() {
		return cars;
	}
	public void setCars(List<Car> cars) {
		this.cars = cars;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

Car.java

package com.neudeu.po;

public class Car {
	private String brand;
	private double price;
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car [brand=" + brand + ", price=" + price + "]";
	}
	
	
}

输出:

代码:配置文件: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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	
	<bean id="userDao" class="com.neuedu.dao.impl.UserDaoImpl"></bean>
	<bean id="userService" class="com.neuedu.service.UserService">
	<!-- set方法注入 -->
		<!-- <property name="dao" ref="userDao"></property> -->
		<!-- 构造方法注入 -->
		<!-- <constructor-arg ref="userDao"></constructor-arg> -->
		<property name="dao">
			<bean class="com.neuedu.dao.impl.UserDaoImpl"></bean>
		</property>
	</bean>
	<bean id="FLL" class="com.neudeu.po.Car">
		<property name="brand" value="法拉利"></property>
		<property name="price" value="3000000"></property>
	</bean>
	
	<bean id="BW" class="com.neudeu.po.Car">
		<property name="brand" value="宝马"></property>
		<property name="price" value="300000"></property>
	</bean>
	
	<bean id="BYD" class="com.neudeu.po.Car">
		<property name="brand" value="比亚迪"></property>
		<property name="price" value="30000"></property>
	</bean>
	
	<bean id="person" class="com.neudeu.po.Person">
		<property name="name" value="zhang"></property>
		<property name="age" value="30"></property>
		<property name="cars">
			<list>
				<bean class="com.neudeu.po.Car">
					<property name="brand" value="红旗"></property>
					<property name="price" value="300000"></property>
				</bean>
				<ref bean="FLL"/>
				<ref bean="BW"/>
				<ref bean="BYD"/>
			</list>
		</property>
	</bean>
</beans>
 

Test.java

package com.neuedu.test;
import com.neudeu.po.Person;
import com.neuedu.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {

	public static void main(String[] args) {
		
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		
	}
 
}

输出:

目录
相关文章
|
2月前
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
112 0
|
1月前
|
XML Java 数据格式
Spring系列文章2:基于xml方式依赖注入
Spring系列文章2:基于xml方式依赖注入
|
6天前
|
XML Java 数据格式
Spring 属性注入方式
Spring 属性注入方式
13 2
|
16天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
15 0
|
18天前
|
Java Spring 容器
Spring注入
Spring注入
31 13
|
24天前
|
XML Java 数据库
在Spring框架中,XML配置事务
在Spring框架中,XML配置事务
|
29天前
|
XML Java 数据格式
Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)
Spring 第二节 IOC—基于XML配置和管理Bean 万字详解!。
94 5
|
1月前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
28 1
|
1月前
|
Java Spring
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
|
2月前
ssm(Spring+Spring mvc+mybatis)——web.xml
ssm(Spring+Spring mvc+mybatis)——web.xml
13 0