idea创建第一个spring项目

前言

刚出来工作也有一年多了,最近在回看Spring全家桶。相关代码有同步到自己的GitHub。这里就当作自己的笔记本吧。

创建spring工程


4.是否自动创建空的spring容器配置文件,默认文件名是spring-config.xml,勾选不勾选都行,后面则自己创建,一般spring的配置文件名为applicationContext.xml
5.设置如何添加spring要用到的库
Use library:从磁盘上选择要添加的Spring的jar库(需要已下载Spring)
Download:由IDEA自动下载到项目的lib文件夹中,并自动添加到项目的类路径中

Set up library later:后面再设置
下载了Spring的可以选第一个,否则选第二个。

鼠标右键src,一般取名为applicationContext

项目结构

spring项目与Java普通项目的对比

  • spring的优良特性

  • spring是一个分层的Javase/EE full -stack(一站式)轻量级开源框架,可以在其中写原始的java语言
  • spring是一个IOC和AOP容器框架
  • 面向切面编程AOP为OOP的补充
  • spring是一个容器,包含并且管理应用对象的生命周期
  • 组件化:spring的组件是spring管理的对象(降低耦合)
  • 一站式:在IOC和AOP的基础上开源整合各种开源框架和第三方库
  • spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2,Hibernate,Mybatis,quarz等)的直接支持。减低JavaEE API的使用难度、如JDBC,JavaMail,远程调用等都进行了封装
  • 普通的Java程序


  • spring的Java程序

实体类hello相同
spring配置文件

spring的测试输出类

总结

  • IOC:(inversion of control)控制反转,将我们创建对象的方式反转了。以前对象的创建由我们开发人员自己维护和创建,包括依赖也是自己注入。使用了spring以后,对象的创建以及依赖关系可以由spring完成创建及注入、反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序。
  • DI:(dependency injection)依赖注入,实现IOC思想需要DI做支持。注入方式(Set方法注入,构造方法注入,字段注入),注入类型(值类型注入【其实就是八大基本数据类型】,引用类型注入【其实就是将依赖对象注入】)
  • 普通的Java程序,当我们需要该类时,我们通过new方法,来实例化对象,每一个对象需要我们自己管理
  • spring的Java程序,我们的每一个对象都是由spring来管理,当我们需要某个对象时,就通过spring容器获取该对象的实例

spring创建对象的三种方式

1.调用无参构造,有参构造

2.静态工厂创建对象

3.实例工厂创建

spring容器的两种实现方式

  • 在通过IOC容器读取Bean的实例之前,需要先将IOC容器本身实例化,spring提供了IOC容器的两种实现方式
  • BeanFactory:IOC容器的基本实现,是spring内部的基础设施,是面向spring本身的,不是提供给开发人员用的
  • ApplicationContext:BeanFactory的子接口,提供了更多的高级特性,面向spring的使用者
  • 几乎所有场合都是用ApplicationContext而不是底层的BeanFactory
  • ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

ApplicationContext的主要实现类

  • ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件(相对路径)
  • FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件(绝对路径)

bean的配置和获取

获取bean实例,有参函数的获取两种方式。

配置bean实例:set注入和构造函数注入。P名称注入及spel注入我后面在说Bean的属性注入时。四个一起再写下。

bean与property的属性

    <!--注册对象到容器-->
    <!--将user对象交给Spring容器管理-->
    <!--Bean元素,使用该元素描述需要spring管理的对象
    class属性:被管理对象的完整类名
    name属性:给被管理的对象取个名字,获得对象时,根据该名称获得对象,名称可以重复,可以使用特殊字符
    id属性:与name属性一模一样,名称不可重复,不可使用特殊字符。后联合name属性一起做使用,由id相同的情况时,就用name值做区分。
    结果:尽量使用name属性,id属性多用不上。
    <bean name="user" class="com.yesion.bean.User"></bean>
    -->
 <!--
       <bean>定义Spring管理的一个对象
       id:对象唯一标识,通过类型获取bean的过程中不可以设置
       class:次对象所属类的全限定名
 -->
 <!--
        <property>为对象的某个属性赋值
        name:属性值
        value:属性名
 -->
posted @ 2021-08-25 16:16  LanceYa  阅读(488)  评论(0)    收藏  举报