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启动...");
}
}
factory
package com.chinasoft.factory;
import com.chinasoft.dao.UserDao;
import com.chinasoft.dao.impl.UserDaoImpl;
/**
* 普通工厂
*/
public class NormalFactory {
/**
* 使用工厂创建对象
* @return
*/
public UserDao createDao(){
return new UserDaoImpl();
}
}
package com.chinasoft.factory;
import com.chinasoft.dao.UserDao;
import com.chinasoft.dao.impl.UserDaoImpl;
/**
* 静态工厂
*/
public class StaticFactory {
/**
* 使用静态方法创建的对象
* @return
*/
public static UserDao createDao(){
return new UserDaoImpl();
}
}
service层
package com.chinasoft.service;
public interface UserService {
void findAll();
}
package com.chinasoft.service.impl;
import com.chinasoft.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void findAll() {
System.out.println("业务层运行了");
}
public void init(){
System.out.println("初始化方法被调用");
}
public void destroy(){
System.out.println("销毁方法被执行");
}
}
web层
package com.chinasoft.web;
import com.chinasoft.dao.UserDao;
import com.chinasoft.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserWeb {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService)app.getBean("userService");
UserDao userDao = (UserDao) app.getBean("userDao");
userDao.findAll();
userService.findAll();
}
}
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.xm
<?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管理bean的细节
bean标签:
作用:用来配置让spring创建的对象
属性:
id: 唯一标识
class: 需要创建的对象的全限定类名
scope: 用来指定bean作用范围
singleton: 单例的(默认值)
prototype: 多例的
session: 作用于web应用的会话范围
global-session: 作用于web应用的全局回话
init-method: 在创建对象时调用初始化方法 只执行一次
destroy-method: 在指定类销毁的时候调用方法
spring创建bean对象的三种方式:
1.使用默认无参构造方法
2.使用普通工厂的方法创建
3.使用静态工厂的方法创建
-->
<!-- 1.使用默认无参构造方法 -->
<bean id="userService" class="com.chinasoft.service.impl.UserServiceImpl" init-method="init" destroy-method="destroy" ></bean>
<!-- 2.使用普通工厂的方法创建 -->
<!-- <bean id="normalFactroy" class="com.chinasoft.factory.NormalFactory"></bean>-->
<!-- <bean id="userDao" factory-bean="normalFactroy" factory-method="createDao"></bean>-->
<!-- 3.使用静态工厂的方法创建 -->
<bean id="userDao" class="com.chinasoft.factory.StaticFactory" factory-method="createDao"></bean>
<!--
bean的生命周期:
singleton(单例):
对象的初始化:当应用加载,创建容器的时候,对象被初始化
对象的存活: 只要容器在对象就一直活着
对象的销毁: 容器销毁时,对象也销毁
prototype(多例):
对象的初始化: 当使用对象时,创建新的对象
对象的存活: 只要对象一直在被使用,则存活着
对象的销毁: 当对象长时间不使用,被java中的GC回收
-->
</beans>