SSM依赖注入
学习SSM框架,该框架对于bean的管理类更为复杂、也更加细化,在学习SSM之前,对于使用的依赖直接new一个出来就可以了,但也得益于所做的项目是小型的,对于大型、复杂的项目使用SSM框架是一种很好的选择。
1、setter注入和构造器注入
(1)应用类型-操作service层
//在bean中定义引用类型属性 并提供set方法 public class BookServiceImpl implements BookService { private BookDao bookDao; private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } @Override public void save() { System.out.println("book service save ..."); bookDao.save(); userDao.save(); } } // 在配置中使用property引用类型对象 <bean id="bookService" class="com.service.impl.BookServiceImpl"> <property name="bookDao" ref="bookDao"/> <property name="userDao" ref="userDao"/> </bean>
(2)简单类型-操作dao层
//在bookDao中进行配置 public class BookDaoImpl implements BookDao { private int connectionNum;//连接数量 private String connectionName;//连接名称 public void setConnectionNum(int connectionNum) { this.connectionNum = connectionNum; } public void setConnectionName(String connectionName) { this.connectionName = connectionName; } @Override public void save() { System.out.println("book dao save ..."+connectionNum+","+connectionName); } } //在配置文件中进行bean的配置 <bean id="bookDao" class="com.dao.impl.BookDaoImpl"> <property name="connectionNum" value="10"/> <property name="connectionName" value="mysql"/> </bean>
2、构造器注入
二、构造器注入 与setter注入有很大程度的相似,将setter方法换成构造函数 • 在bean中定义构造方法 public class BookServiceImpl implements BookService { private BookDao bookDao; private UserDao userDao; public BookServiceImpl(BookDao bookDao, UserDao userDao) { this.bookDao = bookDao; this.userDao = userDao; } @Override public void save() { System.out.println("book service save ..."); bookDao.save(); userDao.save(); } } • 在配置文件中进行配置,注意bean中标签名的变化 <bean id="bookDao" class="com.dao.impl.BookDaoImpl"> <constructor-arg name="connectionNum" value="100"/> <constructor-arg name="dataName" value="mysql"/> </bean> <bean id="userDao" class="com.dao.impl.UserDaoImpl"/> <bean id="bookService" class="com.service.impl.BookServiceImpl"> <constructor-arg name="bookDao" ref="bookDao"/> <constructor-arg name="userDao" ref="userDao"/> </bean> 这里面的name指的是构造函数中参数的名称,耦合度较高,可以将name换成type,或者将name换成index。直接使用名称或者使用索引较好
3、依赖自动装配
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
2021-07-26 自学Java第二十四课