Spring入门+运行
Spring介绍
- spring只是作为容器来管理 web service dao层(表示层,业务层,持久层) 且贯穿这三个层,一站式开发,控制反转(IOC)和面向切面(AOP)的容器框架
- 方便解耦,简化开发:
- 通过spring提供的Ioc容器,我们可以将对象之间的依赖关系交给由Spring进行控制,避免硬编码所造成的过度程序耦合,
- 用户不必再为单实例模型类,属性文件解析等这些很低层的需求编写代码,可以更专注于上层的应用。
- AOP编程的支持:
- 通过spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付
- 声明式事务的支持:
- 在spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明方式灵活地进行事务的管理,提高开发效率和质量
- 方便程序的测试:
- 可以用非容器依赖的编程方式进行几乎所有的测试工作,在spring里,测试不再是昂贵的操作,而是随手可做的事情,例如:spring支持Junit4,通过注解方式的测试Spring程序
- 方便集成各种优秀框架
- spring不排斥各种优秀框架,spring可以降低各种框架的使用难度,spring提供了对优秀框架等的支持
- 降低java ee api 的使用难度
- spring对很多难用的java ee API提供了一个薄薄的封装层,通过spring的简易封装,java ee API使用难度大大降低
spring可以一站式开发为啥还要用mybatis springMVC
- spring 管理项目中的对象 作为一个容器来使用
- spring处理dao能力上不比mybatis好
Spring 项目搭建
- core Container 板块
- 包 第一步
- 约束引入 第二步
- 第三步 引入步骤
- 第四步 图二显示能够配置说明已成功
- 配置好的代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> </beans>
- 包 第一步
入门案例
- 在之前开发中,new对象是我们自己做的
- spring是一个容器,他将帮我们管理对象
- 通过applicationContext读取spring配置文件
- 通过getBean()读取配置文件 获得配置好的对象(程序员向spring容器要对象)
user.java代码
package com.spring.bean; public class user { private Integer u_id; private String username; private String password; public Integer getU_id() { return u_id; } public void setU_id(Integer u_id) { this.u_id = u_id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="User" class="com.spring.bean.user" /> </beans>
Test.java
package com.spring.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.bean.user; public class test { @Test public void Test() { user u = new user(); System.out.println(u); ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); user u1 =(user)ac.getBean("User"); //需要强制转换 getBean (bean"name") System.out.println(u1); user u2 = ac.getBean(user.class); //不需要强制转换 System.out.println(u2); } }
Ioc 反转控制 、 依赖注入 DI
- 控制反转:将我们创建对象的工作交给spring容器帮我们完成
- 依赖注入:将值通过配置方式为变量初始化/赋值(注入)
- 注入方式:set方法注入、构造注入、属性注入
- 注入类型
- 值类型(value)八大基本数据类型
- 引用类型String 自定义对象等
反转代码
//IOC反转:创建对象这份工作由我们自己执行反转给spring帮我们执行 //IOC控制:就是由spring帮我们负责创建销毁对象,掌控对象的声明周期等,我们在需要使用对象的时候跟spring申请即可 //IOC是一种编程思想,也是一种新的设计模式,需要依赖注入技术的支持 @Test public void Test() { user u = new user(); System.out.println(u); ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); user u1 =(user)ac.getBean("User"); //需要强制转换 getBean (bean"name") System.out.println(u1); user u2 = ac.getBean(user.class); //不需要强制转换 从输出可以看u2跟u1是同一个 System.out.println(u2); }
依赖注入的代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="User" class="com.spring.bean.user" > <property name="u_id" value="2"></property> <!--这样就可以注入--> </bean> </beans>
test文件跟上面一样