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文件跟上面一样