1. <br /> Spring(大容器 大总管------偏向于管理的)<br /> 管理的是对象<br /> 1.创建 IOC控制反转 原生(每次一个新的) 单例<br /> 2.注入 DI依赖注入<br /> 3.AOP 哪些目标对象 哪些不是目标对象(切面对象) 代理<br /> 动态代理+责任链模式<br />OOP 面向对象编程思想 object
    2. MVC分层

    (JQ VUE) V:View JSP HTML+AJAX+JSON

    SpringMVC C:Controller Filter——-Servlet
    (请求/响应)
    M:Model Service Java业务逻辑

    MyBatis DAO Java数据持久化 读/写JDBC
    (ORM)

    ==============================================================================

    1. 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 延迟加载?
    2. 就不想要单例的? 通过<bean scope="singleton / prototype"><br /> 如果是单例 延迟?<bean lazy-init="true延迟 false/default立即">
    3. 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 /> 在核心配置文件中引入其他文件
    1. package test;
    2. import domain.Student;
    3. import org.springframework.beans.factory.BeanFactory;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. public class Test {
    6. public static void main(String[] args) {
    7. // //1.创建对象
    8. // Student student = new Student();
    9. // //2.属性赋值 利用带参数的构造方法赋值
    10. // student.setSid(1);
    11. // student.setSname("zzt");
    12. // student.setSsex("男");
    13. // student.setAge(18);
    14. // //3.对象创建好了以后 可能会有管理的问题
    15. // // 原生 单例(声明托管)
    16. //===========================================================
    17. //1.导包 core beans context expression commons-logging
    18. //2.找一个Spring中的"小弟"帮我们做事(管理对象--类名字 反射 创建--配置文件)
    19. BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");//类路径 classLoader
    20. // 底层做如下的事情
    21. // 读取配置文件
    22. // 读取配置文件中Bean标签中的class名字 "domain.Student"
    23. // Class clazz = Class.forName("domain.Student");
    24. // Object obj = clazz.newInstance();
    25. // 将obj对象管理起来啦----->生命周期托管的方式
    26. // 单一的集合 map(id,obj);
    27. // return obj;
    28. //3.通过factory来获取我们要的Bean对象
    29. Student student1 = (Student)factory.getBean("student");// IOC
    30. // Student student2 = (Student)factory.getBean("student");// IOC
    31. System.out.println(student1);
    32. package domain;
    33. public class Student {
    34. private Integer sid;
    35. private String sname;
    36. private String ssex;
    37. private Integer age;
    38. public Student() {
    39. System.out.println("默认无参数构造方法");
    40. }
    41. public Student(Integer sid, String sname, String ssex, Integer age) {
    42. this.sid = sid;
    43. this.sname = sname;
    44. this.ssex = ssex;
    45. this.age = age;
    46. }
    47. @Override
    48. public String toString() {
    49. return "Student{" +
    50. "sid=" + sid +
    51. ", sname='" + sname + '\'' +
    52. ", ssex='" + ssex + '\'' +
    53. ", age=" + age +
    54. '}';
    55. }
    56. public Integer getSid() {
    57. return sid;
    58. }
    59. public void setSid(Integer sid) {
    60. this.sid = sid;
    61. }
    62. public String getSname() {
    63. return sname;
    64. }
    65. public void setSname(String sname) {
    66. this.sname = sname;
    67. }
    68. public String getSsex() {
    69. return ssex;
    70. }
    71. public void setSsex(String ssex) {
    72. this.ssex = ssex;
    73. }
    74. public Integer getAge() {
    75. return age;
    76. }
    77. public void setAge(Integer age) {
    78. this.age = age;
    79. }
    80. }
    81. System.out.println(student1.getSname() == null);
    82. // System.out.println(student2);
    83. // System.out.println(student1 == student2);//对象创建后 默认管理起来啦 单例 如果不一样 new new
    84. //想要给对象赋值
    85. // 1.set方法(属性封装)
    86. // 2.构造方法(带参数)package domain;
    87. public class Student {
    88. private Integer sid;
    89. private String sname;
    90. private String ssex;
    91. private Integer age;
    92. public Student() {
    93. System.out.println("默认无参数构造方法");
    94. }
    95. public Student(Integer sid, String sname, String ssex, Integer age) {
    96. this.sid = sid;
    97. this.sname = sname;
    98. this.ssex = ssex;
    99. this.age = age;
    100. }
    101. @Override
    102. public String toString() {
    103. return "Student{" +
    104. "sid=" + sid +
    105. ", sname='" + sname + '\'' +
    106. ", ssex='" + ssex + '\'' +
    107. ", age=" + age +
    108. '}';
    109. }
    110. public Integer getSid() {
    111. return sid;
    112. }
    113. public void setSid(Integer sid) {
    114. this.sid = sid;
    115. }
    116. public String getSname() {
    117. return sname;
    118. }
    119. public void setSname(String sname) {
    120. this.sname = sname;
    121. }
    122. public String getSsex() {
    123. return ssex;
    124. }
    125. public void setSsex(String ssex) {
    126. this.ssex = ssex;
    127. }
    128. public Integer getAge() {
    129. return age;
    130. }
    131. public void setAge(Integer age) {
    132. this.age = age;
    133. }
    134. }
    135. }
    136. }
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. https://www.springframework.org/schema/beans/spring-beans.xsd">
    6. <!--这个文件的目的是为了管理所有的bean对象的 配置 值-->
    7. <!--<bean id="student" class="domain.Student" scope="singleton" lazy-init="true">-->
    8. <!--<property name="sid" value="2"></property>-->
    9. <!--<property name="sname" value="dmc"></property>-->
    10. <!--<property name="ssex" value="女"></property>-->
    11. <!--<property name="age" value="99"></property>-->
    12. <!--</bean>-->
    13. <!--利用构造方法赋值-->
    14. <bean id="student" class="domain.Student">
    15. <constructor-arg name="sid">
    16. <!--给空值的方式-->
    17. <null></null>
    18. </constructor-arg>
    19. <constructor-arg name="sname">
    20. <value>dme</value>
    21. </constructor-arg>
    22. <constructor-arg name="ssex" value="男" type="java.lang.String"></constructor-arg>
    23. <constructor-arg name="age" value="19"></constructor-arg>
    24. </bean>
    25. </beans>