当前位置: 首页 > news >正文

愤怒的Spring(三)Idaea Maven搭建Spring并运行项目(超详细,超全)

愤怒的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>

在这里插入图片描述

http://www.lryc.cn/news/44244.html

相关文章:

  • NDK(三):JNIEnv解析
  • 禅道——图文安装及使用教程
  • Java基础——枚举类enum
  • 【机器学习】一文了解如何评估和选择最佳机器学习模型并绘制ROC曲线?
  • vue3 笔记
  • 第12章_MySQL数据类型精讲
  • 二叉树路径总和第一题
  • @RefreshScope源码解析
  • 【开发】后端框架——Spring
  • vue中的自定义指令
  • 技术分享及探讨
  • 人工智能AI
  • 2022天梯赛补题
  • 字节跳动测试岗面试挂在2面,复盘后,我总结了失败原因,决定再战一次...
  • Nodejs实现通用的加密和哈希算法(MD5、SHA1、Hmac、AES、Diffie-Hellman、RSA),crypto模块详解
  • 测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
  • 安卓悬浮窗口,  丝滑双指缩放视频窗口
  • 300左右哪款蓝牙耳机适合学生用?四款便宜质量好的蓝牙耳机推荐
  • 桥梁设计模式
  • 【华为OD机试 2023最新 】 新员工座位(C++)
  • 蓝桥杯刷题第二十二天
  • CentOS从gcc 4.8.5 升级到gcc 8.3.1
  • 【人人都能读标准】12. 原始类型的编码形式
  • VUE进行前后端交互
  • ThingsBoard Gateway:物联网设备数据采集与集成的强大解决方案
  • 什么是镜像/raid
  • 【Python】如何有效比较两个时间序列在图形上的相似度?
  • JavaEE-常见的锁策略和synchronized的锁机制
  • 信息化,数字化,智能化是三种不同的概念吗?
  • 【华为OD机试 2023最新 】 匿名信(C++ 100%)