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:属性名
-->

浙公网安备 33010602011771号