多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 ![](https://box.kancloud.cn/255907935fefc28b263a3bcf0a7a9dad_1196x704.png) 1. core container a) beans与core 它们提供spring框架最基本功能,包含ioc与di b) context 上下文对象,基于beans与cores c) spel它是sprng提供的一个表达式语言 2. Data access/integration a) 数据访问 b) 集成 3. Web a) Spring本身提供spring mvc b) 也可以与其它的web层进行集成 4. AOP AOP大部分情况下是使用动态代理来实现的。 5. Test 使用spring可以方便的进行测试 # 创建对象 ~~~ package studySpring; public class User { public User() { System.out.println("User对象空参构造方法!!!!"); } private String name; private Integer age; private Car car; public User(String name, Car car) { System.out.println("User(String name, Car car)!!"); this.name = name; this.car = car; } public User(Car car, String name) { System.out.println("User(Car car,String name)!!"); this.name = name; this.car = car; } public User(Integer name, Car car) { System.out.println("User(Integer name, Car car)!!"); this.name = name + ""; this.car = car; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public void init() { System.out.println("我是初始化方法!"); } public void destory() { System.out.println("我是销毁方法!"); } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", car=" + car + "]"; } } ~~~ ~~~ package studySpring; public class Car { private String name; private String color; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } @Override public String toString() { return "Car [name=" + name + ", color=" + color + "]"; } } ~~~ # 写配置注册对象到容器 位置任意(建议放到src下) 配置文件名任意(建议applicationContext) # 导入约束 ![](https://box.kancloud.cn/ecdd1378bb607284495ee3e442fa59b6_1294x896.png) 然后配置文件先写 ~~~ <?xml version="1.0" encoding="UTF-8"?> <beans> </beans> ~~~ ![](https://box.kancloud.cn/8fde167983a1cf2e207af948379f7e9c_630x380.png) 然后点add ![](https://box.kancloud.cn/959b457a2d1ea1d2dc5a9d11eebc0112_1044x688.png) 确定后再点add ![](https://box.kancloud.cn/1ab53ea1a8acdc30bab364e9180ff3b3_1044x688.png) 选择刚才添加的spring ![](https://box.kancloud.cn/178a6545bdae45386079b08e90f0cf77_1430x988.png) 点ok就行了 # 测试 在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-4.2.xsd "> <!-- 将User对象交给spring容器管理 --> <!-- Bean元素:使用该元素描述需要spring容器管理的对象 class属性:被管理对象的完整类名. name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象. 可以重复.可以使用特殊字符. id属性: 与name属性一模一样. 名称不可重复.不能使用特殊字符. 结论: 尽量使用name属性. --> <bean name="user" class="studySpring.Userr" ></bean> <!-- 导入其他spring配置文件 --> <import resource="studySpring/applicationContext.xml"/> </beans> ~~~ 然后写个类测试下 ~~~ package hello; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import bean.User; public class Demo { @Test public void fun1() { // 1.创建容器对象,因为直接在src下,就写applicationContext.xml ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); // 2.向容器要User对象 User u = (User) ac.getBean("user"); // 打印User对象 System.out.println(u); } } ~~~ ApplicationContext它是BeanFactory的一个子接口,我们在使用时使用的是AppliCationContext的实现类ClassPathXmlApplicationContext