龙泉市建设局门户网站网站目录扫描
愤怒的Spring(三)
一、目录结构
环境搭配与上一篇内容一样,详情请看愤怒的Spring(二)Idaea Maven搭建Spring并运行项目(超详细,超全)https://blog.csdn.net/sz710211849/article/details/129715765
二、代码与结果展示
BookDao
package com.cc;public interface BookDao {public void save();
}
BookDaoImpl
package com.cc;public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("book dao constructor is running ....");}public void save() {System.out.println("book dao save ...");}}
OrderDao
package com.cc;public interface OrderDao {public void save();
}
OrderDaoImpl
package com.cc;public class OrderDaoImpl implements OrderDao {public void save() {System.out.println("order dao save ...");}
}
UserDao
package com.cc;public interface UserDao {public void save();
}
UserDaoImpl
package com.cc;public class UserDaoImpl implements UserDao {public void save() {System.out.println("user dao save ...");}
}
OrderDaoFactory
package com.cc;//静态工厂创建对象
public class OrderDaoFactory {public static OrderDao getOrderDao(){System.out.println("factory setup....");return new OrderDaoImpl();}
}
UserDaoFactory
package com.cc;//实例工厂创建对象
public class UserDaoFactory {public UserDao getUserDao(){return new UserDaoImpl();}
}
UserDaoFactoryBean
package com.cc;import org.springframework.beans.factory.FactoryBean;
//FactoryBean创建对象
public class UserDaoFactoryBean implements FactoryBean<UserDao> {//代替原始实例工厂中创建对象的方法public UserDao getObject() throws Exception {return new UserDaoImpl();}public Class<?> getObjectType() {return UserDao.class;}}
AppForInstanceBook
package com.cc;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppForInstanceBook {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");BookDao bookDao = (BookDao) ctx.getBean("bookDao");bookDao.save();}
}
每运行一个APP内容,其余的bean需要注释掉,只留下本APP需要的bean
AppForInstanceOrder
package com.cc;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppForInstanceOrder {public static void main(String[] args) {//通过静态工厂创建对象
// OrderDao orderDao = OrderDaoFactory.getOrderDao();
// orderDao.save();ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");OrderDao orderDao = (OrderDao) ctx.getBean("orderDao");orderDao.save();}
}
AppForInstanceUser
package com.cc;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppForInstanceUser {public static void main(String[] args) {
// //创建实例工厂对象
// UserDaoFactory userDaoFactory = new UserDaoFactory();
// //通过实例工厂对象创建对象
// UserDao userDao = userDaoFactory.getUserDao();
// userDao.save();ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");UserDao userDao1 = (UserDao) ctx.getBean("userDao");UserDao userDao2 = (UserDao) ctx.getBean("userDao");System.out.println(userDao1);System.out.println(userDao2);
// userDao.save();}
}
spring.xml
每运行一个APP内容,其余的bean需要注释掉,只留下本APP需要的bean
<?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--><!-- <bean id="bookDao" class="com.cc.BookDaoImpl"/>--><!--方式二:使用静态工厂实例化bean--><!-- <bean id="orderDao" class="com.cc.OrderDaoFactory" factory-method="getOrderDao"/>--><!--方式三:使用实例工厂实例化bean--><!-- <bean id="userFactory" class="com.cc.UserDaoFactory"/><bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>--><!--方式四:使用FactoryBean实例化bean--><bean id="userDao" class="com.cc.UserDaoFactoryBean"/></beans>
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.itheima</groupId><artifactId>spring_01_quickstart</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.6</version></dependency></dependencies><build><defaultGoal>compile</defaultGoal></build></project>