目录
3,HelloSpring
4,IOC创建对象的方式
5,Spring配置
5.1,别名
5.2,Bean的配置
5.3,import
6,依赖注入
6.1,构造器注入
6.2,set方法注入[重点]
3,HelloSpring
创建Hello类:
package com.xiao.domain;
public class Hello {
private String str;
public String getStr() {
return str;
}
public Hello() {
}
public void setStr(String str) {
this.str = str;
}
public Hello(String str) {
this.str = str;
}
@Override
public String toString() {
return "Hello{" +
"str='" + str + '\'' +
'}';
}
}
配置bean:
测试:
import com.xiao.domain.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
//获取Spring的上下文对象!
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//我们的对象都在Spring中管理了我们要使用对象之间取出来就可以了
Hello hello = (Hello) context.getBean("hello");
System.out.println(hello.toString());
}
}
结果:
Hello{str='Spring'}
思考问题?
- Hello对象是谁创建的?
Hello对象是由Spring创建的
- Hello对象的属性是怎么设置的?
Hello对象的属性是由Spring设置的
这个过程就叫做控制反转;
4,IOC创建对象的方式控制:谁来控制对象的创建,传统应用程序是由程序本身来控制创建的!使用Spring后对象是由Spring创建的.
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:就是利用set方法进行依赖注入的
IOC是一种编程思想:由主动编程变成被动接收
可以通过new ClassPathXmlApplicationContext去浏览一下Spring源码
OK,到了现在我们彻底不用在程序中去修改了!要实现不同的 *** 作,只需要在xml配置文件中进行修改,所谓的ioc一句话搞定:对象由Spring来,创建,管理,装配!
- 使用无参构造创建对象,默认!
- 假设我们需要使用有参构造创建对象:
- 下标赋值:
- 通过类型匹配
- 通过参数名匹配
- 下标赋值:
总结:当ClassPathXmlApplicationContext();加载xml文件时会创建其中全部配置的对象!
扩展:Spring底层实现是采用了一个Map进行键值对的存储的!
5,Spring配置 5.1,别名
5.2,Bean的配置
5.3,import
这个import一般用于团队开发使用,他可以将多个配置文件合并为一个。
假设现在有多人开发,这三个人复制不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个,使用的时候之间使用总配置就可以了!
- applicationContext.xml
6,依赖注入
6.1,构造器注入
前面已经说过了于4.ioc创建方式!
6.2,set方法注入[重点][环境搭建]
复杂类型:
package com.xiao.domain;
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
测试真实对象
package com.xiao.domain;
import java.util.*;
public class Student {
private String name;
private Address address;
private String[] books;
private List hobbys;
private Map card;
private Set games;
private String wife;
private Properties info;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", address=" + address +
", books=" + Arrays.toString(books) +
", hobbys=" + hobbys +
", card=" + card +
", games=" + games +
", wife='" + wife + '\'' +
", info=" + info +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
public List getHobbys() {
return hobbys;
}
public void setHobbys(List hobbys) {
this.hobbys = hobbys;
}
public Map getCard() {
return card;
}
public void setCard(Map card) {
this.card = card;
}
public Set getGames() {
return games;
}
public void setGames(Set games) {
this.games = games;
}
public String getWife() {
return wife;
}
public void setWife(String wife) {
this.wife = wife;
}
public Properties getInfo() {
return info;
}
public void setInfo(Properties info) {
this.info = info;
}
}
beans.xml
测试类:
import com.xiao.domain.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student) applicationContext.getBean("student");
System.out.println(student.getName());
}
}
完善注入信息:
红楼梦
水浒传
三国演义
西游记
听歌
敲代码
看书
LOL
MC
CF
2106
男
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)