详细讲解JAVA的Spring框架

原创
小哥 3年前 (2022-10-21) 阅读数 149 #JAVA
1.Spring两个核中的两个核IoC(Inverse Of Control:反向控制:反向控制:反向控制)

  作用:减少计算机程序的耦合减少计算机程序的耦合减少计算机程序的耦合(解除代码中的依赖项释放代码中的依赖项解锁代码中的依赖项)

AOP(Aspect Oriented Programming(:切向编程)角色(:切向编程)角色:在程序运行时无需修改源代码即可增强现有方法2.Spring的优势

促进脱钩简化开发易脱钩简化开发易脱钩简化开发
通过 Spring 提供的 IoC 容器,您可以将对象之间的依赖项留给 Spring 这使您可以控制和避免由硬编码引起的过度编程耦合。用户也不再需要为单例模式类、属性文件解析和其他非常底层的需求编写代码,而可以更多地专注于上层应用程序。

AOP 编程支持对编程的支持
通过 Spring 的 AOP 便于面向切割的编程的功能,其中许多功能不容易使用传统的 OOP 实现的功能可以通过访问。实现的功能可以通过访问 AOP 很容易处理。很容易应付。很容易处理。很容易应付。

声明性事务支持声明性事务支持声明性事务支持
它可以将我们从单调乏味的事务管理代码中解放出来,通过声明式、灵活的方式管理事务,提高开发效率和质量。

轻松测试程序方便程序测试
几乎所有的测试工作都可以以非依赖于容器的编程方式完成,测试不再是一项昂贵的操作,而是可以在运行中完成的事情。

轻松集成各种优秀的框架
Spring 有可能降低使用各种框架的难度,提供各种优秀的框架(Struts、Hibernate、Hessian、 Quartz等)以获得直接支持。等)直接支持。(等)以获得直接支持。(等)直接支持。

降低 JavaEE API 使用之难--使用之难
Spring 对 JavaEE API(如 JDBC、 JavaMail、远程调用等)被包裹在薄薄的一层里,所以这些 API 使用之难--使用之难大为降低。

Java 源代码是经典的学习示例,源代码是经典的学习示例
Spring 源代码设计良好,结构清晰,制作独特,处处反映了大师对 Java 灵活使用设计模式和灵活使用设计模式以及灵活使用设计模式和 Java 高水平的技术熟练程度。它的源代码并不是为了 Java 技术方面的最佳实践范例。技术最佳实践的例子。这是技术领域最佳实践的范例。技术方面的最佳实践范例。

3 

![](https://img2018.cnblogs.com/blog/1641261/201906/1641261-20190604112818926-1764068042.jpg) ![](https://img2018.cnblogs.com/blog/1641261/201906/1641261-20190604112852847-190383793.jpg)

3.1 BeanFactory和ApplicationContext的区别

BeanFactory才是Spring容器中的顶级接口。容器中的顶级接口。容器中的顶级接口。容器中的顶级接口。
ApplicationContext是其子接口。是它的子接口。是它的子接口。是它的子界面。
BeanFactory和ApplicationContext的区别:
    创建对象的时间点不同。
        ApplicationContext:默认情况下,读取配置文件后立即创建对象。
        BeanFactory:使用什么以及何时创建对象。:使用什么以及何时创建对象。:创建对象时使用的内容。:创建对象时使用的内容。

3.2 基于XML(入门案例)配置(入门案例)

3.2.1 步骤1:创建步骤1:创建步骤1:创建步骤1:创建maven投影和导入坐标投影和导入坐标

此时,我们不需要通过浏览器访问它,因此打包方法为jar即可。

pom.xml的坐标信息的坐标信息。的坐标信息

org.springframework spring-context 5.0.2.RELEASE  


为了方便测试,可以添加单元测试用于测试目的,可以添加单元测试以方便测试,可以添加单元测试

   junit    junit    4.12 #### 3.2.2 步骤2:创建业务层和接口实现类 业务层接口业务层接口业务层接口业务层接口 /*** *业务层接口业务层接口业务层接口业务层接口 ****/ public interface AccountService {    /***     * 模拟保存帐户模拟保存帐户     */    void saveAccount(); } 业务层接口业务层接口业务层接口业务层接口实现类 /*** * 业务层接口业务层接口业务层接口业务层接口实现类 ***/ public class AccountServiceImpl implements AccountService {    //待解决的待解决的依赖问题待解决的依赖问题的依赖问题    private AccountDao accountDao = new AccountDaoImpl(); ​    /***     * 模拟保存帐户模拟保存帐户     */    public void saveAccount() {        accountDao.saveAccount();   } } #### 3.2.3 步骤3:创建持久层接口持久层接口持久层接口持久层接口和实现类 持久层接口持久层接口持久层接口持久层接口 /******** * 持久层接口持久层接口持久层接口持久层接口 * version:1.0 ******/ public interface AccountDao {    /***     * 演示保存帐户演示保存帐户演示保存的帐户模拟保存的帐户     */    void saveAccount(); } ​ 持久层实现类持久层实现类持久层实现类持久层实现类 /******** * author:shenkunlin * date:2018/7/9 15:26 * description:持久层实现类持久层实现类持久层实现类持久层实现类 * version:1.0 ******/ public class AccountDaoImpl implements AccountDao { /** * 演示保存帐户演示保存帐户演示保存的帐户模拟保存的帐户 */ public void saveAccount() { System.out.println("已保存帐号!已保存的帐户!拯救了帐号!"); } } #### 3.2.4 步骤4:创建测试类步骤4:创建测试类步骤4:创建测试类 /******** * 模拟表示层用于调用Service ******/ public class Client { public static void main(String[] args) { //待解决的待解决的依赖问题待解决的依赖问题的依赖问题 AccountService accountService = new AccountServiceImpl(); accountService.saveAccount(); } } #### 3.2.5 步骤5:在类的根路径下创建任意名称步骤5:创建任意名称xml文件(不能为中文)文档(不能为中文),我们创建bean.xml 将约束导入到配置文件。将约束导入配置文件。将约束导入到配置文件。将约束导入到配置文件。 /spring-framework-5.0.2.RELEASE/docs/spring-framework-reference/html5/core.html #### 3.2.6 步骤6:让步骤6:使步骤6:让spring管理资源,在配置文件中配置service和dao ​                         #### 3.2.7 成功测试配置测试配置成功测试配置成功 public class Client { /** * 使用main方法获取容器测试执行方法 */ public static void main(String[] args) { //1.使用ApplicationContext接口,该接口是获取spring容器 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); //2.根据bean的id获取对象 AccountService accountService = (AccountService) ac.getBean("accountService"); System.out.println(accountService); ​ AccountDao accountDao = (AccountDao) ac.getBean("accountDao"); System.out.println(accountDao); } } 日志信息 信息: Loading XML bean definitions from class path resource [bean.xml] com.itheima.service.impl.AccountServiceImpl@61832929 com.itheima.dao.impl.AccountDaoImpl@29774679 转载于:https://www.cnblogs.com/d1320/p/10972822.html
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

上一篇:什么是NIO 下一篇:小白开学Asp.NetCore