例1、DI注入,通过set方法注入值
1.1、添加依赖pom.xml
<dependencies>
<!-- Spring的核心工具包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!--在基础IOC功能上提供扩展服务,还提供许多企业级服务的支持,有邮件服务、任务调度、远程访问、缓存以及多种视图层框架的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring IOC的基础实现,包含访问配置文件、创建和管理bean等 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring context的扩展支持,用于MVC方面 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring表达式语言 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
1.2、User实体类
package com.fan.entity;
public class User {
private String name;
private Integer age;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
1.3、UserController类
package com.fan.controller;
import com.fan.entity.User;
public class UserController {
private User user1;
public void setUser1(User user1) {
this.user1 = user1;
}
public User getUser1(){
return user1;
}
}
1.4、UserTest类
public class UserTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserController userController =(UserController)applicationContext.getBean("usercontroller");
System.out.println(userController);//com.fan.controller.UserController@4973813a
System.out.println(userController.getUser1().getName()+" "+userController.getUser1().getAge());//韦凡 11
User user = (User)applicationContext.getBean("user");
System.out.println(user.getName()+" "+user.getAge());//韦凡 11
}
}
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.fan.entity.User"> <!--创建一个user对象-->
<property name="name" value="韦凡" ></property> <!-- DI注入 通过set方法注入值-->
<property name="age" value="11"></property>
</bean>
<bean id="usercontroller" class="com.fan.controller.UserController">
<property name="user1" ref="user"></property>
</bean>
</beans>
例2、DI注入,通过构造方法注入值
2.1、添加依赖pom.xml
<dependencies>
<!-- Spring的核心工具包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!--在基础IOC功能上提供扩展服务,还提供许多企业级服务的支持,有邮件服务、任务调度、远程访问、缓存以及多种视图层框架的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring IOC的基础实现,包含访问配置文件、创建和管理bean等 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring context的扩展支持,用于MVC方面 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring表达式语言 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
2.2、定义一个Person类(User类是上面的)
package com.fan.entity;
public class Person {
private String name;
private Integer age;
private User user;
//构造方法注入DI
public Person(String name,Integer age,User user){
this.name=name;
this.age=age;
this.user=user;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public User getUser() {
return user;
}
}
2.3、PersonTest类
public class PersonTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
//构造方法注入测试
Person person = (Person)applicationContext.getBean("person");
System.out.println(person.getName()+" "+person.getAge()+" 她的学生是:"+person.getUser().getName());
}
}
2.4、配置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="user" class="com.fan.entity.User"> <!--创建一个user对象-->
<property name="name" value="韦凡" ></property> <!-- DI注入 通过set方法注入值-->
<property name="age" value="11"></property>
</bean>
<!--构造方法注入-->
<bean id="person" class="com.fan.entity.Person">
<constructor-arg name="name" value="红红" type="java.lang.String"></constructor-arg> <!--通过构造方法注入-->
<constructor-arg name="age" value="50"></constructor-arg>
<constructor-arg name="user" ref="user"></constructor-arg> <!-- 引用属性类型值注入-->
</bean>
</beans>
例3、p命名空间注入(需要调用set方法注入)
3.1、在pom.xml添加依赖的jar包
<dependencies>
<!-- Spring的核心工具包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!--在基础IOC功能上提供扩展服务,还提供许多企业级服务的支持,有邮件服务、任务调度、远程访问、缓存以及多种视图层框架的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring IOC的基础实现,包含访问配置文件、创建和管理bean等 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring context的扩展支持,用于MVC方面 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- Spring表达式语言 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
3.2、定义个Man类(User类时例1中的)
package com.fan.entity;
public class Man {
private String name;
private Integer age;
private User user;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setUser(User user) {
this.user = user;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public User getUser() {
return user;
}
}
3.3、创建一个ManTest类
public class UserTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
//p命名空间注入测试
Man man=(Man)applicationContext.getBean("man");
System.out.println(man.getName()+" "+man.getAge());
}
}
3.4、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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--p命名空间注入-->
<bean id="man" class="com.fan.entity.Man" p:name="龙哥" p:age="50" p:user-ref="user"></bean><!--p命名空间注入 通过set方法注入值-->
</beans>
需要注意配置文件中添加命名空间p (这是与上面文件不同的地方)xmlns:p="http://www.springframework.org/schema/p"






网友评论