案例
-
jar包导入
只用导入sping-webmvc即可,Spring需要的其他依赖也会一起被导入进来。<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.7.RELEASE</version> </dependency>
-
编写一个实体类
在这里插入代码片 public class User { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void showUser(){ System.out.println("我是User类"); } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + '}'; }}
-
编写spring配置文件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:在配置文件的名字,没有限制 class:全路径名字,包名+类名 --> <bean id="user" class="cn.alan.model.User"> <!-- property:配置实体类属性 name:并不是属性 , 而是set方法后面的那部分 , 首字母小写 value:设置的属性的值 --> <property name="id" value="1"/> <property name="name" value="alan"/> </bean>
- 编写测试类
public class MyTest { public static void main(String[] args) { //1、根据配置文件创建Spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //2、获取Spring容器中的bean User user = (User) context.getBean("user"); System.out.println(user.toString()); } }
- 输出
案例总结
测试类中使用到的对象不需要程序员去手动创建,只需要在applicationContext.xml中进行配置,即可将实体类对象注入到Spring容器中,这样程序员就可以直接到Spring中去获取需要的实体类对象。
上面这个过程就叫控制反转 :
- 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
- 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
- 依赖注入 : 就是利用set方法来进行注入的.
Spring创建对象的方式
备注:在配置文件加载的时候,Spring中管理的对象都已经初始化了!
- 通过无参构造方法
上述的案例,即是通过无参构造 - 通过有参构造方法
<!-- 第一种根据index参数下标设置 --> <bean id="user" class="cn.alan.model.User"> <!-- index指构造方法 , 下标从0开始 --> <constructor-arg index="0" value="1"/> <constructor-arg index="1" value="alan-index"/> </bean> <!-- 第二种根据参数名字进行设置--> <bean id="user" class="cn.alan.model.User"> <constructor-arg name="id" value="1"/> <constructor-arg name="name" value="alan-name"/> </bean> <!-- 第三种根据参数类型进行设置--> <bean id="user" class="cn.alan.model.User"> <constructor-arg type="java.lang.Integer" value="1"/> <constructor-arg type="java.lang.String" value="alan-type"/> </bean>
Spring配置
-
bean配置
<!--bean就是java对象,由Spring创建和管理--> <!-- id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符 如果配置id了,又配置了name,那么name是别名 name可以设置多个别名,可以用逗号,分号,空格隔开 如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象; class是bean的全限定名=包名+类名 --> <bean id="hello" name="user user2,user3;h4" class=cn.alan.model.User"> <property name="name" value="Spring"/> </bean>```
-
别名
alias 设置别名 , 为bean设置别名 , 可以设置多个别名<!--设置别名:在获取Bean的时候可以使用别名获取--> <alias name="user" alias="userNew"/>
-
import
团队的合作通过import来实现。团队成员在开发过程中可以使用各自的Spring配置文件(applicationContext.xml),最后可以导入、汇总成一个配置文件。<import resource="{path}/beans.xml"/>