(一)什么是Spring
Spring框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的一个开源框架。
EE开发分为三层结构:WEB层(Spring MVC) 业务层(Bean管理IOC) 持久层(Spring 的JDBC模板 、ORM模板用于整合其他的持久层框架)
(二)开始
IOC:即控制反转,是对象的创建不通过 手动 new,而是把对象的创建权交给Spring来完成。
DI: 即依赖注入,意思是 Spring主动创建被调用类的对象,然后把这个对象注入到我们自己的类中,使我们能使用它。
Spring例子:hello的实现
第一步首先在IDEA下创建一个java项目,然后创建hello模块,设置为maven项目。
第二部 加入相关的maven依赖:
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>4.3.18.RELEASEversion>
dependency>
dependencies>
第三步:创建userService接口及userServiceImpl类
首先是userService接口
public interface userService {
public void SayHello();
}
然后是userServiceImpl类文件
public class userServiceImpl implements userService {
public void SayHello() {
System.out.println("Hello World");
}
}
第四步:在main/resources文件夹下创建beans.xml文件完成相关的配置
<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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userService" class="com.txp.dao.userServiceImpl"/>
beans>
第五步:创建测试类
public class testSpring {
@Test
public void test1(){
//1.获取spring配置文件
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
//2.由配置文件返回对象
userService us = (com.txp.dao.userService) applicationContext.getBean("userService");
us.SayHello();
}
}
(三)Spring相关介绍
id:Bean起个名字是唯一的
name:没有为唯一属性要求,作用和id类似
Spring的 Bean的属性注入 的属性注入 :
第一种构造方法的式 :
<bean id="car" class="com.txp.domain.Car">
<constructor-arg name="name" value="qirui"/>
<constructor-arg name="price" value="100"/>
bean>
第二种set方法的属性注入
id="car" class="com.txp.domain.Car">
<property name="name" value="qi"/>
<property name="price" value="455"/>
特别要注意的是还有对象类型的注入 使用的ref 如:
<bean id="user" class="com.txp.domain.User">
<property name="name" value="zhangsan"/>
<property name="age" value="12"/>
<property name="car" ref="#{'car'}"/>
<property name="car" ref="car"/>
bean>
以及名称空间p的属性注入的方式
id="car1" class="com.txp.domain.Car" p:name="宝马" p:price="1200000"/>
id="user1" class="com.txp.domain.User" p:name="sicong" p:age="12" p:car-ref="car1"/>
在一个文件中引入另一个配置文件
<import resource="path"/>
采用扫描包的方式注入:beans.xml修改—-也叫组件扫描需要在需要的类上添加注解
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
">
<context:component-scan base-package="com.txp.dao"/>
beans>
同样的在userServiceImpl文件作出修改
@Component(value = "userService")
public class userServiceImpl implements userService {
public void SayHello() {
System.out.println("Hello World");
}
}
Spring还提供了@Component的三个衍生注解上
@Controller :Webceng
@Service :业务层
@Repository :持久层