Spring 1 2 3 4 5 6 7 <dependency > <groupId > org.springframework</groupId > <artifactId > spring-webmvc</artifactId > <version > 5.2.8.RELEASE</version > </dependency >
一、简介 一、优点
spring是一个开源免费的框架
spring是一个非入侵和轻量型的框架
控制反转和面向切面编程
支持事务的处理和对各种框架的整合
==spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架==
二、IOC理论推导
通过设置一个第三方的容器,让ABCD解耦,他们之间就不会因为某一个奔溃导致全部不能使用,他们实现了独立;
控制反转 (Inversion of Control,缩写为IoC ),是面向对象编程 中的一种设计原则,可以用来减低计算机代码之间的耦合度 。其中最常见的方式叫做依赖注入 (Dependency Injection,简称DI ),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
简单一点来说就是把这个程序的主动权进行一个移交;原来的程序,用户获得的对象是由程序员的class a=new class();来构成,如果用户需求改变那么对象就要改变但是如果使用setter注入的话,就不会存在这个问题;用户需要什么就自己选择,程序员也避免了大量的代码修改工作;
三.第一个spring程序 Dao:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 package com.saxon.Dao;public interface UserDao { void getUser () ; } package com.saxon.Dao;public class MysqlUserDaoImpl implements UserDao { private String str; @Override public void getUser () { System.out.println (str); } @Override public String toString () { return "MysqlUserDaoImpl" ; } } package com.saxon.Dao;public class OralceUserImpl implements UserDao { private String str; public String getStr () { return str; } public void setStr (String str) { this .str = str; } @Override public void getUser () { System.out.println (str); } @Override public String toString () { return "OracleUserImpl" ; } }
Dao层一个接口,一推实现类;
service层:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.saxon.Service;public interface UserService { void getUserDao () ; } package com.saxon.Service;import com.saxon.Dao.UserDao;public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao (UserDao userDao) { this .userDao = userDao; } @Override public void getUserDao () { System.out.println (userDao); } }
xml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?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 id ="OralceUserImpl" class ="com.saxon.Dao.OralceUserImpl" > <property name ="str" value ="我是谁" /> </bean > <bean id ="MysqlUserDaoImpl" class ="com.saxon.Dao.MysqlUserDaoImpl" > </bean > <bean id ="UserServiceImpl" class ="com.saxon.Service.UserServiceImpl" > <property name ="userDao" ref ="OralceUserImpl" /> </bean > </beans >
关于属性的标签:
如果不是对象就用value,如果是对象的话,就用ref标签;另外关于值,如果类中没有构造器的话,那么就会失败,spring是通过setter把值设置;
使用ref标签的ref中写的值是我们在spring中托管的对象的id;
总结下来就是,我们的spring负责把我们交给他的对象用一个容器保存下来,如果我们要使用的话,我们就直接使用;==用户不用修改源代码,就只要修改一下配置文件就可以完成操作,对象由spring创建,托管,修改,这个就是IOC==