【Spring】第一个 Spring 程序

一、Spring 简介

英文官网:Spring | Home

中文官网:Spring 中文网 官网

下载地址(5.3.9):JFrog

 

Spring 框架中的 jar 包

spring-core-5.3.9.jar:字节码(这个是支撑程序运行的jar包

spring-core-5.3.9-javadoc.jar:代码中的注释

spring-core-5.3.9-sources.jar:源码

JAR文件 描述
spring-aop-5.3.9.jar 这个jar 文件包含在应用中使用Spring 的AOP 特性时所需的类
spring-aspects-5.3.9.jar 提供对AspectJ的支持,以便可以方便的将面向切面的功能集成进IDE中
spring-beans-5.3.9.jar 这个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion ofControl / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
spring-context-5.3.9.jar 这个jar 文件为Spring 核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
spring-context-indexer-5.3.9.jar 虽然类路径扫描非常快,但是Spring内部存在大量的类,添加此依赖,可以通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能。
spring-context-support-5.3.9.jar 用来提供Spring上下文的一些扩展模块,例如实现邮件服务、视图解析、缓存、定时任务调度等
spring-core-5.3.9.jar Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
spring-expression-5.3.9.jar Spring表达式语言。
spring-instrument-5.3.9.jar Spring3.0对服务器的代理接口。
spring-jcl-5.3.9.jar Spring的日志模块。JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging"。
spring-jdbc-5.3.9.jar Spring对JDBC的支持。
spring-jms-5.3.9.jar 这个jar包提供了对JMS 1.0.2/1.1的支持类。JMS是Java消息服务。属于JavaEE规范之一。
spring-messaging-5.3.9.jar 为集成messaging api和消息协议提供支持
spring-orm-5.3.9.jar Spring集成ORM框架的支持,比如集成hibernate,mybatis等。
spring-oxm-5.3.9.jar 为主流O/X Mapping组件提供了统一层抽象和封装,OXM是Object Xml Mapping。对象和XML之间的相互转换。
spring-r2dbc-5.3.9.jar Reactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写。这个jar文件是Spring对r2dbc的支持。
spring-test-5.3.9.jar 对Junit等测试框架的简单封装。
spring-tx-5.3.9.jar 为JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持。
spring-web-5.3.9.jar Spring集成MVC框架的支持,比如集成Struts等。
spring-webflux-5.3.9.jar WebFlux是 Spring5 添加的新模块,用于 web 的开发,功能和 SpringMVC 类似的,Webflux 使用当前一种比较流程响应式编程出现的框架。
spring-webmvc-5.3.9.jar SpringMVC框架的类库
spring-websocket-5.3.9.jar Spring集成WebSocket框架时使用

注意:

如果你只是想用 Spring 的 IoC 功能,仅需要引入:spring-context 即可,将这个jar包添加到 classpath 当中

如果采用 maven 只需要引入 context 的依赖即可

Spring 6



  
    repository.spring.milestone
    Spring Milestone Repository
    https://repo.spring.io/milestone
  



  
  
    org.springframework
    spring-context
    6.0.0-M2
  

 

Spring 5  


    org.springframework
    spring-context
    5.3.23

 

二、第一个 Spring 程序 

配置依赖  



    org.springframework
    spring-context
    5.3.23



    junit
    junit
    4.13.2
    test

实体类  

package org.qiu.spring.bean;

/**
 * @author 秋玄
 * @version 1.0
 * @email [email protected]
 * @project Spring
 * @package org.qiu.spring.bean
 * @date 2022-10-30-16:49
 * @since 1.0
 */
public class User {
}

编写配置文件  




    
    

    
    
    

测试类  

@Test
public void testFirstSpringCode(){
    // 获取 Spring 容器对象
    // ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring配置文件的路径");

    /**
     * ApplicationContext 是一个接口
     * ApplicationContext 接口下有很多实现类,其中一个叫做: ClassPathXmlApplicationContext
     * ClassPathXmlApplicationContext 负责从类路径中加载 Spring 配置文件的对象
     *
     * new ClassPathXmlApplicationContext("spring.xml"); 的时候就会实例化对象,而不是在 getBean 的时候创建的对象
     */
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

    // 根据 bean 的 id 获取对象
    Object user = applicationContext.getBean("userBean");
    System.out.println(user);
}

运行结果:org.qiu.spring.bean.User@5891e32e  

 

三、第一个程序剖析

1、在 Spring 的配置文件中 id 不能重名

2、Spring 是通过调用类的无参数构造方法来创建对象的,所以要想让 Spring 给你创建对象,必须保证无参数构造方法是存在的

3、Spring 是如何创建对象的:

// dom4j解析beans.xml文件,从中获取class的全限定类名
// 通过反射机制调用无参数构造方法创建对象
Class clazz = Class.forName("com.powernode.spring6.bean.User");
Object obj = clazz.newInstance();

4、创建好的对象存储到一个 Map 当中  

【Spring】第一个 Spring 程序_第1张图片

5、Spring 配置文件的名字是随意的

6、Spring 的配置文件可以有多个,在 ClassPathXmlApplicationContext 构造方法的参数上传递文件路径即可

7、Spring 配置文件中配置的 bean 可以任意类,只要这个类不是抽象的,并且提供了无参数构造方法

8、getBean() 方法调用时,如果指定的 id 不存在时不会返回 null,而是会出现异常 NoSuchBeanDefinitionException

9、getBean() 方法返回的类型是 Object,如果访问子类的特有属性和方法时,还需要向下转型,有其它办法可以解决这个问题吗?

// 指定创建对象的类型
User user = applicationContext.getBean("userBean", User.class);

10、ClassPathXmlApplicationContext 是从类路径中加载配置文件,如果没有在类路径当中,又应该如何加载配置文件呢?  

【Spring】第一个 Spring 程序_第2张图片



    
ApplicationContext applicationContext2 = new FileSystemXmlApplicationContext("d:/spring6.xml");
Vip vip = applicationContext2.getBean("vipBean2", Vip.class);
System.out.println(vip);
  • 没有在类路径中的话,需要使用FileSystemXmlApplicationContext类进行加载配置文件

  • 这种方式较少用。一般都是将配置文件放到类路径当中,这样可移植性更强  

11、ApplicationContext 的超级父接口 BeanFactory  

BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");
Object vipBean = beanFactory.getBean("vipBean");
System.out.println(vipBean);

BeanFactory 是 Spring 容器的超级接口

ApplicationContext 是 BeanFactory 的子接口 

 

从 Spring5 之后,Spring 框架支持集成的日志框架是 Log4j2

如何启用日志框架:

引入 Log4j2 的依赖



  org.apache.logging.log4j
  log4j-core
  2.19.0


  org.apache.logging.log4j
  log4j-slf4j2-impl
  2.19.0

在类的根路径下提供 log4j2.xml 配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下)  





    
        
        
            
        
    

    
        
        
            
            
        
    

使用日志框架  

Logger logger = LoggerFactory.getLogger(FirstSpringTest.class);
logger.info("我是一条日志消息");

 

一  叶  知  秋,奥  妙  玄  心

你可能感兴趣的:(Spring,spring,数据库,java)