Spring学习笔记 第二章 如何使用Ioc

Spring学习笔记 第二章 如何使用Ioc

创建Maven工程,pom.xml添加依赖

pom.xml
	<dependency>
 		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>5.0.11.RELEASE</version>
	</dependency>
	
	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>5.0.11.RELEASE</version>
	</dependency>

(1) 传统方式

Student.java
   	package com.hbb.entity;
	import lombok.Data;
	@Data
	public class Student {
		private long id;
		private String name;
		private int age;
	}
StudentTest.java
	package com.hbb.test;
	import com.hbb.entity.Student;
	public class StudentTest {
		public static void main(String[] args) {
			Student sdt = new Student();
			sdt.setId(1L);
			sdt.setAge(28);
			sdt.setName("范小花");
			System.out.println(sdt);
		}
	}
执行结果:Student(id=1, name=范小花, age=28)

此处需要导入lombok的jar包。作用是简化实体类的开发。从网上下载的lombok-1.18.6.jar版本,配置到pom.xml里。配置好后找到jar的本地位置,通过CMD命令执行安装。
命令:java -jar lombok-1.18.6.jar
按照提示将自己的IDE加入。安装后将IDE重启并clean工程即可使用。配置好后,对于实体类,不需要再实装set/get方法和toString方法,即可直接调用。

添加lombok依赖的方法:

pom.xml
	<!-- 简化实体类的开发 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.6</version>
      <scope>provided</scope>
    </dependency>

(2) 通过IoC创建
在配置文件中添加需要管理的对象。XML格式的配置文件,文件名可自定义。

Spring.xml(resources目录下)
	<!-- 通过ID来区分bean,名字可以自定义 -->
	<bean id="student" class="com.hbb.entity.Student">
		<property name="id" value="11"></property>
		<property name="age" value="20"></property>
		<property name="name" value="牛大壮"></property>
	</bean>

如果创建的maven工程没有resources目录,可以自己添加。 添加方法:工程 --→ Properties --→ Java Build Path --→ Source --→ Add Folder --→ Create New Folder --→ 输入[src/main/resources] --→ OK

从IoC获取对象

StudentTest.java
	// 加载配置文件
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
	Student student = (Student) applicationContext.getBean("student");
	System.out.println(student);
  • 通过配置bean标签来完成对象的管理
    ・id属性: 相当于对象名
    ・class属性: 对象的模板类
    ※所有交给IoC容器管理的类必须有无参构造函数,因为Spring底层是通过反射机制来创建对象,调用的是无参构造

如果没有无参构造方法,运行时会报以下错误:
Causedby:java.lang.NoSuchMethodException:com.hbb.entity.Student.init()
补充:lombok的@AllArgsConstructor标签可用来添加有参构造方法

  • 对象的成员变量通过property标签完成赋值
    ・name:成员变量名
    ・value:成员变量值(基本数据类型,String类型可以直接赋值,其他引用类型不能通过value来赋值)
    ・ref:将IoC中的另外一个bean赋值给当前成员变量(DI)
Address.java
	public class Address {
		private long id;
		private String name;
	}
Student.java
	@Data
	@AllArgsConstructor
	@NoArgsConstructor
	public class Student {

		private long id;
		private String name;
		private int age;
		private Address address;
	}
spring.xml
	<bean id="student" class="com.hbb.entity.Student">
		<property name="id" value="11"></property>
		<property name="age" value="20"></property>
		<property name="name" value="牛大壮"></property>
		<property name="address" ref="address"></property>
	</bean>
	
	<bean id="address" class="com.hbb.entity.Address">
		<property name="id" value="1001"></property>
		<property name="name" value="日之出"></property>
	</bean>
执行结果:Student(id=11, name=牛大壮, age=20,address=Address(id=1001, name=日之出))
发布了12 篇原创文章 · 获赞 0 · 访问量 145

猜你喜欢

转载自blog.csdn.net/qq_41684416/article/details/105471088