一 认识spring
开发者在从事开发的工作中,复杂的系统中可能存在重复或者复杂的方式,为了简化开发,把这些东西提炼出来,写好一些可以通用的方法,放到一个容器中管理。
目的:是为了解决企业级应用开发的复杂性而创建的
特点:spring是一种容器框架,把控制层,业务层service,dao层,持久层都当做bean进行维护,并且维护bean和bean之间的关系(ref配置)。在代码中可以通过getBean(id)使用。官方说法是,分层架构允许使用者选择使用哪个组件,同时为j2ee应用程序开发提供集成的框架,从简单性,可测试性和松耦合的角度,任何java应用都可以从spring中收益,最核心的是控制反转IOC和面向切面AOP。
二 开始案例IOC,先从例子开始
首先看不用框架情况下
1 创建实体类
package com.spring01;
public class User{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sayHello(){
System.out.println("hello"+name);
}
}
2.创建测试类
import com.spring01.User;
import org.junit.Test;
public class test01 {
@Test
public void test01(){
User user = new User();
user.setName("小明");
user.sayHello();
}
}
输入结果:hello小明
接下来用spring
1.创建maven项目,
;pom.xml引入jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring</groupId>
<artifactId>spring</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.4</version>
</dependency>
</dependencies>
</project>
2.创建核心xml ,文件名字叫applicationContext.xml,或者beans.xml
<?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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.spring01.User">
<!--注入属性,set方式-->
<property name="name">
<value>大黄</value>
</property>
</bean>
</beans>
这些xsd文件为配置命名规范和约束,写了这些才能配置xml中元素。可以去掉加上试试看。直接从官方文档复制即可。
id为bean唯一标识,不可以重复。
创建测试类
import com.spring01.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test01 {
@Test
public void test01(){
/* User user = new User();
user.setName("小明");
user.sayHello();*/
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) ac.getBean("user");
user.sayHello();
}
}
User类不变
package com.spring01;
public class User{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void sayHello(){
System.out.println("hello"+name);
}
}
输出结果 hello大黄
bean元素的作用,当我们的spring框架被加载,spring就会自动创建一个bean。之后创建一个user对象,并且设置(set)属性。name和java类中setName的对应,标识为红色,不对应情况会提示出错。
这是最简单的注入,
我们通过配置,将创建对象的过程交给spring容器。