Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
官网:https://spring.io/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WwiJMwj-1572753833241)(images/20191013211645457_19629.png)]
解压到合适的目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iTe1oGC5-1572753833246)(images/20191013212213329_17733.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKTIUe7n-1572753833252)(images/20191013215626239_20727.png)]
public interface UserService {
public void save();
}
public class UserServiceImpl implements UserService{
@Override
public void save() {
System.out.println("UserService执行了........");
}
}
public void demo1() {
UserService userService = new UserServiceImpl();
userService.save();
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s6zyaR1G-1572753833255)(images/20191014213335552_25995.jpg)]
在D:\MyData\Spring\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html中的xsd-configuration.html文件
<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.musapir.Spring4.demo1.UserServiceImpl">bean>
beans>
public void demo2() {
//创建Spring的工厂
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("UserService");
userService.save();
}
Schema的配置
Bean的相关的配置
Bean的生命周期的配置
public class CustomerDAOImpl implements CustomerDAO{
public void setUp() {
System.out.println("CustomerDAOImpl被初始化了");
}
@Override
public void save() {
System.out.println("CustomerDAOImpl的save方法执行了");
}
public void destroy() {
System.out.println("CustomerDAOImpl被销毁了");
}
}
<bean id="customerDao" class="com.musapir.Spring4.demo2.CustomerDAOImpl" init-method="setUp" destroy-method="destroy">bean>
编写Car类,并提供构造方法
public class Car {
String name;
double price;
public Car(String name, double price) {
super();
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Car [name=" + name + ", price=" + price + "]";
}
}
在配置文件中提供属性和值
<bean id="car" class="com.musapir.Spring4.demo3.Car">
<constructor-arg name="name" value="宝马"/>
<constructor-arg name="price" value="600000"/>
bean>
编写测试类
public void demo1() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) context.getBean("car");
System.out.println(car);
}
编写car2类,提供set方法
public class Car2 {
private String name;
private double price;
public void setName(String name) {
this.name = name;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Car2 [name=" + name + ", price=" + price + "]";
}
}
在配置文件中设置属性值
<bean id="car2" class="com.musapir.Spring4.demo3.Car2">
<constructor-arg name="name" value="PUMA宝马"/>
<constructor-arg name="price" value="1000000"/>
bean>
编写测试类
public void demo2() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Car2 car2 = (Car2) context.getBean("car");
System.out.println(car);
}
set方法设置对象类型的属性的值
public class Employee {
private String name;
private Car2 car2;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car2 getCar2() {
return car2;
}
public void setCar2(Car2 car2) {
this.car2 = car2;
}
@Override
public String toString() {
return "Employee [name=" + name + ", car2=" + car2 + "]";
}
}
<bean id="employee" class="com.musapir.Spring4.demo3.Employee">
<property name="name" value="Mamat"/>
<property name="car2" ref="car2"/>
bean>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2469NBXB-1572753833256)(images/20191019102413325_27828.png)]
<bean id="car" class="com.musapir.Spring4.demo3.Car" p:name="YAMAHA" p:price="100000">bean>
<bean id="employee" class="com.musapir.Spring4.demo3.Employee" p:name="张三" p:car2-ref="car2">bean>
<bean id="car2" class="com.musapir.Spring4.demo3.Car2">
<property name="name" value="#{'KIYA'}"/>
<property name="price" value="#{6000000}"/>
bean>
对象属性的注入
<bean id="employee" class="com.musapir.Spring4.demo3.Employee">
<property name="name" value="Mamat"/>
<property name="car2" value="#{car2}"/>
bean>