Spring(一)

目录

1、Spring 概念

2、Spring的IOC操作

3、IOC底层原理

4、IOC入门案例

5、Spring的bean管理(xml方式)

6、IOC和DI区别

7、Spring整合web项目原理

 

 

一、Spring 概念

     1、spring是开源的轻量级框架

 

     2、spring核心主要有两部分:

          (1)aop :面向切面编程,扩展功能不是修改源代码实现

          (2)ioc :控制反转: 把对象的创建不是通过new的方式实现,而是交给spring配置创建类对象

     

     3、spring是一站式框架:spring在JavaEE三层结构中,每一层都提供不同的解决技术

     web层:springMVC

     service层:IOC

     dao层:spring的jdbcTemplate

     4、spring版本

               spring4.x

 

二、Spring的IOC操作

     1、把对象的创建直接交给spring进行管理

     

     2、IOC操作两部分

          (1)IOC的配置文件方式

          (2)IOC的注解方式

 

三、IOC底层原理

     1、IOC底层原理使用技术

          (1)XML配置文件

          (2)dom4j解析XML

          (3)工厂设计模式

          (4)反射

 

     2、IOC实现原理

          

四、IOC入门案例

     第一步、导入架包

          (1)解压资料zip文件: spring-framework-4.2.4.RELEASE-dist.zip

                    jar特点:都有三个jar包:

                  

          (2)做spring基础功能的时候,导入四个核心jar包就可以了

          (3)导入支持日志输出的jar包

              

     第二步、创建类,在类里面创建方法

public class User {

       

       public static void main(String[] args) {

              // 原始方法

              User user = new User();

              user.add();

       }

       public void add () {

              System.out.println("user add .............");

       }

}

     第三步、创建spring配置文件,配置创建类

          (1)spring核心配置文件名称和位置不是固定的

                  建议放到src下面,官方建议 applicationContext.xml

          (2)引入schema约束

               xsd-configuration.html 文件最下面

               

          (3)配置对象创建

                   bean1.xml

               

     第四步、写代码测试对象创建

       @Test

       public void testUser () {

              // 1 加载spring配置文件,根据其创建对象

              ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

              // 2 得到配置创建的对象

              User user = (User) context.getBean("user");

              // 3 使用对象

              System.out.println(user);

              user.add();

       }

 

 

五、spring的bean管理(xml方式)

1、bean实例化的方式

     (1)在spring里面通过配置文件创建对象

     (2)bean实例化三种方式

              第一种 使用类的无参构造创建(重点)

                    

                        类里面没有无参数的构造方法,会出现异常

              第二种 使用静态工厂创建

                    创建静态的方法,返回类对象

                    

                    

              第三种 使用示例工厂创建

                    创建非静态的方法,返回类对象

                    

                    

 

2、bean标签常用属性

     (1)id属性

             起名称,id属性值不能包含特殊字符

     (2)class属性

             创建对象所在类的全路径

     (3)name属性

             功能和id属性是一样的,id属性值不能包含特殊符号,但是name属性值可以包含特殊符号

     (4)scope属性

             

 

3、属性注入介绍

     (1)创建对象的时候,给类的属性设置值

 

     (2)属性注入的三种方式

          第一种 使用set方法注入

          第二种 有参构造注入

          第三种 使用接口注入

         

     (3)在spring框架中,支持前两种注入方式

          第一种 使用set方法注入

          第二种 有参构造注入

         

     (4)使用有参构造注入属性

          

           

 

     (5) 使用set方法注入属性

          

          

     

4、注入对象类型属性(重点)

     (1)创建service和dao类,在service得到dao对象

     (2) 具体实现过程

               1> 在service里面把dao作为类型属性

                    public class UserDao {

       public void add () {

              System.out.println("UserDao add ......");

       }

       

}

               2> 生成dao类型属性的set方法

public class UserService {

       

       // 1 定义Dao类型属性

       private UserDao userDao;

       

       // 2 生成set方法

       public void setUserDao(UserDao userDao) {

              this.userDao = userDao;

       }

       

       public void add () {

              System.out.println("UserService add ......");

              userDao.add();

       }

}

               3> 配置文件中注入关系

     <!-- 注入对象类型属性 -->

     <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>    

     <bean id="userService" class="cn.itcast.ioc.UserService">

           <property name="userDao" ref="userDao"></property>

     </bean>

 

5、p名称空间注入

     (1)xml配置文件添加:

          

     (2)配置

public class Person {

       private String pName;

       public void setpName(String pName) {

              this.pName = pName;

       }

       

       public void method () {

              System.out.println("pName -- " + pName);

       }

}

     <!-- p名称空间注入 -->

     <!--

           普通属性:  p:属性名称=“”

           对象属性:  p:属性名称-ref=“”

      -->

     <bean id="person" class="cn.itcast.property.Person" p:pName="ZJM"></bean>

 

6、注入复杂类型属性

     (1)数组

     (2)List集合

     (3)Map集合

     (4)properties类型

 

import java.util.List;

import java.util.Map;

import java.util.Properties;

public class MyPerson {

       

       private String[] arr;       

       private List<String> list;    

       private Map<String, String> map;       

       private Properties properties;

       public void setArr(String[] arr) {

              this.arr = arr;

       }

       public void setList(List<String> list) {

              this.list = list;

       }

       public void setMap(Map<String, String> map) {

              this.map = map;

       }

       public void setProperties(Properties properties) {

              this.properties = properties;

       }

       

}

     <!-- 注入复杂类型属性 -->

     <bean id="myPerson" class="cn.itcast.property.MyPerson">

           <!-- 数组 -->

           <property name="arr">

                <list>

                     <value>aaa</value>

                     <value>bbb</value>

                     <value>ccc</value>

                </list>

           </property>

           <!-- list -->

           <property name="list">

                <list>

                     <value>111</value>

                     <value>222</value>

                     <value>333</value>

                </list>

           </property>

           <!-- map -->

           <property name="map">

                <map>

                     <entry key="aaa" value="111"></entry>

                     <entry key="bbb" value="222"></entry>

                </map>

           </property>

           <!-- properties -->

           <property name="properties">

                <props>

                     <prop key="driverclass">com.mysql.jdbc.driver</prop>

                     <prop key="username">root</prop>

                </props>

           </property>

     </bean>

 

六、IOC和DI区别

     1、IOC:控制反转,把对象创建交给spring进行配置

     2、DI:依赖注入,向类里面的属性设置值

     3、关系:依赖注入不能单独存在,需要在IOC的基础之上完成操作

 

七、spring整合web项目原理

     1、加载spring核心配置文件

      // 1 加载spring配置文件,根据其创建对象

      ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

      但是,new对象,虽然功能可以实现,但效率很低

     2、实现思想:把加载配置文件和创建对象过程,在服务器启动的时候完成

     3、实现原理

           1> ServletContext对象

           2> 监听器

     4、具体使用

          在服务器启动时候,为每个项目创建一个ServletContext对象

          在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建

          使用监听器监听到ServletContext对象创建时候

          加载spring配置文件,把配置文件中配置对象创建

          把创建出来的对象放到ServletContext域对象里面(setAttribute方法)

          获取对象时候,从ServletContext域对象得到(getAttribute方法)

 

扩展:

 

1、Servlet三大域对象:

https://www.cnblogs.com/taiguyiba/p/6130293.html

 

2、系统中的 StartupServlet

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的校园二手书交易平台,源码+数据库+毕业论文+视频演示 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的校园二手书交易平台实现了图书信息查询。系统用到了关系型数据库中MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让校园二手书交易平台更能从理念走到现实,确确实实的让人们提升信息处理效率。 关键字:信息管理,时效性,安全性,MySql;Spring Boot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值