<br /> Spring(大容器 大总管------偏向于管理的)<br /> 管理的是对象<br /> 1.创建 IOC控制反转 原生(每次一个新的) 单例<br /> 2.注入 DI依赖注入<br /> 3.AOP 哪些目标对象 哪些不是目标对象(切面对象) 代理<br /> 动态代理+责任链模式<br />OOP 面向对象编程思想 objectMVC分层
(JQ VUE) V:View JSP HTML+AJAX+JSON
SpringMVC C:Controller Filter——-Servlet
(请求/响应)
M:Model Service Java业务逻辑
MyBatis DAO Java数据持久化 读/写JDBC
(ORM)
==============================================================================
1.下载 spring.io GitHub<br /> 2.简单了解一下Spring下载以后的样子<br /> 找到 核心的jar包(21个) 核心手册index.html<br /> 3.上来就用<br /> 将jar导入项目中<br /> 进行对象的管理 对象-Bean JavaBean<br /> 4.创建一个核心文件<br /> 我愿意叫ApplicationContext.xml<br /> 内容参考手册<br /> <bean id="" class=""><br /> 5.获取一个BeanFactory对象<br /> new ClassPathXmlApplicationContext("文件")<br /> 对象 = factory.getBean("id");<br /> 6.从底层机制来讲<br /> 每一个bean默认的效果是单一的(单例模式)<br /> 立即加载?ok 延迟加载?就不想要单例的? 通过<bean scope="singleton / prototype"><br /> 如果是单例 延迟?<bean lazy-init="true延迟 false/default立即">7.如果在未来会有很多层次的很多对象需要管理<br /> 如下几种方式来分开(增强可读性)<br /> 将不同的bean标签 放置在不同的配置文件中<br /> ApplicationContext_Dao.xml<br /> ApplicationContext_Service.xml<br /> ApplicationContext_Controller.xml<br /> 方式一:<br /> new ClassPathXmlApplicationContext("","","");<br /> 方式二:<br /> new ClassPathXmlApplicationContext(new String[]{"","",""});<br /> 方式三:<br /> new ClassPathXmlApplicationContext("ApplicationContext_*.xml");<br /> 方式四:<br /> new ClassPathXmlApplicationContext("ApplicationContext.xml");<br /> 在核心配置文件中引入其他文件
package test;import domain.Student;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {// //1.创建对象// Student student = new Student();// //2.属性赋值 利用带参数的构造方法赋值// student.setSid(1);// student.setSname("zzt");// student.setSsex("男");// student.setAge(18);// //3.对象创建好了以后 可能会有管理的问题// // 原生 单例(声明托管)//===========================================================//1.导包 core beans context expression commons-logging//2.找一个Spring中的"小弟"帮我们做事(管理对象--类名字 反射 创建--配置文件)BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");//类路径 classLoader// 底层做如下的事情// 读取配置文件// 读取配置文件中Bean标签中的class名字 "domain.Student"// Class clazz = Class.forName("domain.Student");// Object obj = clazz.newInstance();// 将obj对象管理起来啦----->生命周期托管的方式// 单一的集合 map(id,obj);// return obj;//3.通过factory来获取我们要的Bean对象Student student1 = (Student)factory.getBean("student");// IOC// Student student2 = (Student)factory.getBean("student");// IOCSystem.out.println(student1);package domain;public class Student {private Integer sid;private String sname;private String ssex;private Integer age;public Student() {System.out.println("默认无参数构造方法");}public Student(Integer sid, String sname, String ssex, Integer age) {this.sid = sid;this.sname = sname;this.ssex = ssex;this.age = age;}@Overridepublic String toString() {return "Student{" +"sid=" + sid +", sname='" + sname + '\'' +", ssex='" + ssex + '\'' +", age=" + age +'}';}public Integer getSid() {return sid;}public void setSid(Integer sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSsex() {return ssex;}public void setSsex(String ssex) {this.ssex = ssex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}System.out.println(student1.getSname() == null);// System.out.println(student2);// System.out.println(student1 == student2);//对象创建后 默认管理起来啦 单例 如果不一样 new new//想要给对象赋值// 1.set方法(属性封装)// 2.构造方法(带参数)package domain;public class Student {private Integer sid;private String sname;private String ssex;private Integer age;public Student() {System.out.println("默认无参数构造方法");}public Student(Integer sid, String sname, String ssex, Integer age) {this.sid = sid;this.sname = sname;this.ssex = ssex;this.age = age;}@Overridepublic String toString() {return "Student{" +"sid=" + sid +", sname='" + sname + '\'' +", ssex='" + ssex + '\'' +", age=" + age +'}';}public Integer getSid() {return sid;}public void setSid(Integer sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSsex() {return ssex;}public void setSsex(String ssex) {this.ssex = ssex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}}}
<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--这个文件的目的是为了管理所有的bean对象的 配置 类 值--><!--<bean id="student" class="domain.Student" scope="singleton" lazy-init="true">--><!--<property name="sid" value="2"></property>--><!--<property name="sname" value="dmc"></property>--><!--<property name="ssex" value="女"></property>--><!--<property name="age" value="99"></property>--><!--</bean>--><!--利用构造方法赋值--><bean id="student" class="domain.Student"><constructor-arg name="sid"><!--给空值的方式--><null></null></constructor-arg><constructor-arg name="sname"><value>dme</value></constructor-arg><constructor-arg name="ssex" value="男" type="java.lang.String"></constructor-arg><constructor-arg name="age" value="19"></constructor-arg></bean></beans>
