一、Spring简单介绍
全名:Spring Framework
创始人:Rod Johnson
毕业于:悉尼大学 (计算机学位 和 音乐学位双学位)
浅谈一下————获得钢琴音乐学博士后
回到软件开发领域 C/C++ Java
Spring的使命是简化Java开发,为了降低Java开发的复杂性
主要学习的知识点有:
IOC Inversion Of Control控制反转
(DI) Dependency Injection依赖注入
AOP Aspect Oriented Programming面向切面编程 (Object Oriented Programming)
非重点:JDBC、JMS、ORM等模块
Spring框架可以理解为是一个管理者
管理是整个分层架构中每一个对象-------->JavaBean
二、下载.jar
Spring官网 https://spring.io/
我直接帮你找到了Spring(.jar)
三、搭建Spring环境(目前只是测试)
我只是创建了一个普通的项目
1.就是导入.jar包。(也可以通过maven工具来导入)
2.配置文件
创建xml文件命名为 ApplicationContext.xml(本人习惯型命名为这个名字)
内容(规则)参考手册
为了测我先创建了一个student对象
package domain;
public class Student{
private Integer sid;
private String sname;
private String ssex;
private Integer sage;
public Student(){}
public Student(Integer sid, String sname, String ssex, Integer sage) {
this.sid = sid;
this.sname = sname;
this.ssex = ssex;
this.sage = sage;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="student" class="domain.Student"></bean>
</beans>
3.创建一个Bean工厂
BeanFactory f = new ClassPathXmlApplicationContext("spring配置文件路径");
Object obj = (造型)f.getBean("name");
4.对象的管理
好多对象-----好多<bean>
每一次创建的对象是new 单例
对象中有属性----DI
Spring管理的bean对象多少个?
每一个数据库的表格会对应一套Controller Service Dao
如果10个表格 10个C 10个S 10个D
多个bean对象 分属在不同的层次中(如dao server controller )
我们可以将配置拆分 看起来更好一点
将XML文件拆分
方式一(String...)
ClassPathXmlApplicationContext("ApplicationContext.xml","","","");
方式二(String[])
ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml","","",""});
方式三(通配符写法*)
ClassPathXmlApplicationContext("ApplicationContext*.xml")
方式四(主配置文件引入其他文件的方式)
ClassPathXmlApplicationContext("ApplicationContext.xml")
主配置文件中通过<import resource="其它配置文件路径"></import>
Spring管理的这些对象是每次new一个新的对象还是单例的
Spring管理的bean对象默认的效果是单例模式
单例模式底层---生命周期托管的方式(Servlet)
单例模式能否修改---可以修改
<bean scope="singleton只要name一致就是单例/prototype原型每次new新的"></bean>
如果是单例对象 立即加载 延迟加载
如果采用的是默认单例模式 对象的创建是立即加载(SpringBean工厂创建时 读取文件 加载对象了)
如果采用的是原型模式 对象在加载SpringBean工厂时候不会创建对象
平时我们在开发的时候可能更多的使用延迟加载的机制
我们可以通过修改Spring配置的方式来改变
<bean lazy-init="default/false表示立即加载 true表示延迟加载">