实体类
package com.syh.pojo;
public class Team {
private Integer id;
private String name;
private String location;
public Team(){
System.out.println("team - 默认的构造方法:id="+id+",name="+name+",location="+location);
}
public Team(Integer id, String name, String location) {
this.id = id;
this.name = name;
this.location = location;
System.out.println("team - 带参的构造方法:id="+id+",name="+name+",location="+location);
}
}
package com.syh.pojo;
public class MyFactory {
/**
* 实例方法
* @return
*/
public Team instanceFun(){
System.out.println("MyFactory--instanceFun");
return new Team(103,"王五","广州");
}
/**
* 静态方法
* @return
*/
public static Team staticFun(){
System.out.println("MyFactory--staticFun");
return new Team(104,"赵六","深圳");
}
public static void main(String[] args) {
MyFactory factory = new MyFactory();
Team t4 = factory.instanceFun();
Team t5 = MyFactory.staticFun();
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.syh</groupId>
<artifactId>Spring01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
spring.xml 除pom.xml外的配置文件均在resources文件夹下创建
<?xml version="1.0" encoding="UTF-8"?>
<!--spring配置文件 beans:根标签
spring中java的对象称为java bean
spring-beans.xsd是一个约束文件 约束xml文件当中都能编写哪些标签-->
<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,告知spring容器创建哪些对象
一个bean标签表示一个对象
id="对象名" 需求唯一
class="完全限定名" spring底层是通过反射来创建对象,所以不能写接口
相当于com.syh.pojo.Team test1 = new com.syh.pojo.Team();
然后将创建的对象放入spring容器的一个集合(Map)中
springMap.put(id,对象);例如:springMap.put(team1,new Team());
scope="singleton/prototype"
singleton:单例,默认值,容器启动完毕后,对象就被创建,而且容器中只有唯一一个对象
prototype:多例,多例的对象是什么时候使用什么时候创建,每次获取的时候都创建新对象
lazy-init="true/false" 是否懒加载,针对单例对象
true 真懒 获取对象的时候才创建
false 不懒 立即创建对象,不管是否使用
init-method="对象创建之后,立即调用初始化方法"
destroy-method="spring容器调用关闭方法的时候,执行的销毁方法"
-->
<!--spring容器创建对象的方式-->
<!--1.通过默认的构造方法-->
<bean id="team1" name="team1" class="com.syh.pojo.Team"></bean>
<!--2.通过带参的构造方法-->
<bean id="team2" name="team2" class="com.syh.pojo.Team">
<!--name表示参数的名字-->
<constructor-arg name="id" value="101"></constructor-arg>
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="location" value="北京"></constructor-arg>
</bean>
<bean id="team3" name="team3" class="com.syh.pojo.Team">
<!--index表示参数下标的索引-->
<constructor-arg index="0" value="102"></constructor-arg>
<constructor-arg index="1" value="李四"></constructor-arg>
<constructor-arg index="2" value="上海"></constructor-arg>
</bean>
<!--3.通过工厂方法-->
<!--3.1实例方法-->
<bean id="factory" class="com.syh.pojo.MyFactory"></bean>
<bean id="instanceTeam" factory-bean="factory" factory-method="instanceFun"></bean>
<!--3.2静态方法-->
<bean id="staticTeam" class="com.syh.pojo.MyFactory" factory-method="staticFun"></bean>
<!--非自定义对象的创建-->
<bean id="date" class="java.util.Date"></bean>
</beans>
测试类
package com.syh.test;
import com.syh.pojo.Team;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.Date;
public class Test01 {
@Test
public void Test01(){
//原有的写法,程序员自己创建 Team team = new Team();
//spring容器创建对象的方式
String springConfig = "spring.xml";
//获取spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(springConfig);
//其他api
int beanDefinitionCount = applicationContext.getBeanDefinitionCount();
System.out.println("容器中对象的个数:"+beanDefinitionCount);
System.out.println("容器中对象的名称:");
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String name:beanDefinitionNames) {
System.out.println("\t"+name);
}
//获取非自定义对象
Date date = (Date) applicationContext.getBean("date");
System.out.println("非自定义对象date:"+date);
}
}
Spring入门案例
于 2022-06-24 12:34:51 首次发布