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>chinasoft</groupId>
<artifactId>test1</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.6</version>
</dependency>
</dependencies>
</project>
bean.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 将对象交由spring IOC容器管理-->
<bean id="UserService" class="com.chinasoft.service.impl.UserServiceImpl"></bean>
<bean id="UserDao" class="com.chinasoft.dao.impl.UserDaoImpl"></bean>
</beans>
dao层
package com.chinasoft.dao;
public interface UserDao {
void findAll();
}
package com.chinasoft.dao.impl;
import com.chinasoft.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void findAll() {
System.out.println("UserDao启动...");
}
}
service层
package com.chinasoft.service;
public interface UserService {
void findAll();
}
package com.chinasoft.service.impl;
import com.chinasoft.dao.UserDao;
import com.chinasoft.dao.impl.UserDaoImpl;
import com.chinasoft.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao=new UserDaoImpl();
@Override
public void findAll() {
System.out.println("Service启动...");
userDao.findAll();
}
}
web层
package com.chinasoft.web;
import com.chinasoft.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
//ApplicationContext:默认情况下创建的对象都是单例的,并采用的是立即加载的方式,也就是已读取配置文件,就根据配置文件创建对象
public class UserWeb {
public static void main(String[] args) {
// 获取spring IOC核心容器
ApplicationContext app=new ClassPathXmlApplicationContext("bean.xml");
for (int i = 0; i < 5; i++) {
//根据id获取对象
UserService userService = (UserService)app.getBean("UserService");
System.out.println(userService);
}
}
}
创建的是单例对象
修改一下UserWeb.java
package com.chinasoft.web;
import com.chinasoft.service.UserService;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
//BeanFactory:需要创建多例对象时,底层由对象完成,采用延时加载的方式创建,如果需要使用到对象的时候他才会根据id去创建一个对应的对象
public class UserWeb {
public static void main(String[] args) {
Resource resource=new ClassPathResource("bean.xml");
BeanFactory beanFactory=new XmlBeanFactory(resource);
for (int i=0;i<5;i++){
UserService userService=(UserService)beanFactory.getBean("UserService");
System.out.println(userService);
}
}
}
修改一下bean.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 将对象交由spring IOC容器管理-->
<!-- scope:prototype为创建多例;singleton为创建单例-->
<bean id="UserService" class="com.chinasoft.service.impl.UserServiceImpl" scope="prototype"></bean>
<bean id="UserDao" class="com.chinasoft.dao.impl.UserDaoImpl"></bean>
</beans>
即对象的多例与单例,由scope属性来控制,ApplicationContext与BeanFactory都可以创建多例对象