4_Spring_XML方式实现DI
4_Spring_XML方式实现DI
spring中的Bean的管理:
Bean(汉译咖啡豆). 又称JAVABean.其实就是JAVA程序程序中的一个个对象,所以Bean的管理其实就是spring对于JAVA程序中的对象的管理
管理的内容是什么
1 对象的创建 IOC
IOC 叫做控制反转,就是Spring给我们创建对象,然后我们直接用,不用自己NEW,前面已经解释过
IOC处理的是对象如何创建的问题
2 属性的赋值 DI
DI Dependency Injection,即“依赖注入” 就是创建属性时给对象属性赋值
对象功能的实现往往要依赖属性的值,那么给对象属性赋值就可以说成是依赖注入
由于对象属性不仅仅是基本数据类型,还可能是其他类,或者引用类型
那么依赖注入将会把更多的对象之间的关系整理到一起,可以行程一个庞大的依赖关系
DI处理的是对象的属性赋值和互相依赖的关系
spring给我们提供了两种关于bean的方式
1 基于XML方式的Bean管理
2 基于注解方式的Bean管理
创建新的模块并导入以下依赖
依赖
org.springframework spring-context 5.3.5 junit junit 4.13.1 test
创建spring配置文件,一般spring的配置文件很多人约定俗称为application****.xml
准备一个要实例化的类
- public class User {
- private Integer userid;
- private String username;
- private String password;
- @Override
- public String toString() {
- return "User{" +
- "userid=" + userid +
- ", username='" + username + ''' +
- ", password='" + password + ''' +
- '}';
- }
- public User() {
- System.out.println("noArgConstructor");
- }
- public User(Integer userid, String username, String password) {
- System.out.println("allArgConstructor");
- this.userid = userid;
- this.username = username;
- this.password = password;
- }
- public void setUserid(Integer userid) {
- System.out.println("setUserid");
- this.userid = userid;
- }
- public void setUsername(String username) {
- System.out.println("setUsername");
- this.username = username;
- }
- public void setPassword(String password) {
- System.out.println("setpassword");
- this.password = password;
- }
- }
IOC创建对象
通过无参构造方法构造对象
id 对象的id
class 类的全路径名
name 和id类似,一般不用
scope 控制对象单例多例和使用范围
singleton作用域(scope 默认值), Spring IOC容器中只会存在一个共享的bean实例
prototype作用域部署的bean,每一次获取都会产生一个新的bean实例,相当与一个new的操作
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义
lazy-init 懒加载 调用getBean的时候再去实例化对象
DI给对象属性赋值
1 通过set方法给对象属性赋值
2 通过有参构造给对象属性赋值
测试代码
- public class Test1 {
- @Test
- public void testGetBean(){
- ApplicationContext context =new
ClassPathXmlApplicationContext("applicationContext.xml"); - User user1 = context.getBean("user1", User.class);
- User user2 = context.getBean("user2", User.class);
- User user3 = context.getBean("user3", User.class);
- User user4 = context.getBean("user4", User.class);
- User user5 = context.getBean("user5", User.class);
- System.out.println(user1);
- System.out.println(user2);
- System.out.println(user3);
- System.out.println(user4);
- System.out.println(user5);
- }
- }
4 注入空值和特殊符号
-
]]>
5 关于bean引用
实体类
- package com.msb.bean;
- import java.util.Date;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class Mouse {
- private String name;
- private Date birthdate;
- @Override
- public String toString() {
- return "Mouse{" +
- "name='" + name + ''' +
- ", birthdate=" + birthdate +
- '}';
- }
- public Mouse() {
- }
- public Mouse(String name, Date birthdate) {
- this.name = name;
- this.birthdate = birthdate;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Date getBirthdate() {
- return birthdate;
- }
- public void setBirthdate(Date birthdate) {
- this.birthdate = birthdate;
- }
- }
- package com.msb.bean;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class Cat {
- private String name;
- private Mouse mouse1;
- @Override
- public String toString() {
- return "Cat{" +
- "name='" + name + ''' +
- ", mouse1=" + mouse1 +
- '}';
- }
- public Cat() {
- }
- public Cat(String name, Mouse mouse1) {
- this.name = name;
- this.mouse1 = mouse1;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Mouse getMouse1() {
- return mouse1;
- }
- public void setMouse1(Mouse mouse1) {
- this.mouse1 = mouse1;
- }
- }
xml 配置
6 关于集合注入
实体类
- package com.msb.bean;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class Book {
- private String bname;
- private String author;
- @Override
- public String toString() {
- return "Book{" +
- "bname='" + bname + ''' +
- ", author='" + author + ''' +
- '}';
- }
- public Book() {
- }
- public Book(String bname, String author) {
- this.bname = bname;
- this.author = author;
- }
- public String getBname() {
- return bname;
- }
- public void setBname(String bname) {
- this.bname = bname;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- }
- package com.msb.bean;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class Student {
- private String[] books;
- private Set
bookSet; - private List
bookList; - private Map<String,String> bookMap;
- private List
bookList2; - @Override
- public String toString() {
- return "Student{" +
- "books=" + Arrays.toString(books) +
- ", bookSet=" + bookSet +
- ", bookList=" + bookList +
- ", bookMap=" + bookMap +
- ", bookList2=" + bookList2 +
- '}';
- }
- public String[] getBooks() {
- return books;
- }
- public void setBooks(String[] books) {
- this.books = books;
- }
- public Set
getBookSet() { - return bookSet;
- }
- public void setBookSet(Set
bookSet) { - this.bookSet = bookSet;
- }
- public List
getBookList() { - return bookList;
- }
- public void setBookList(List
bookList) { - this.bookList = bookList;
- }
- public Map<String, String> getBookMap() {
- return bookMap;
- }
- public void setBookMap(Map<String, String> bookMap) {
- this.bookMap = bookMap;
- }
- public List
getBookList2() { - return bookList2;
- }
- public void setBookList2(List
bookList2) { - this.bookList2 = bookList2;
- }
- public Student() {
- }
- public Student(String[] books, Set
bookSet, List
bookList, Map<String, String> bookMap, ListbookList2) { - this.books = books;
- this.bookSet = bookSet;
- this.bookList = bookList;
- this.bookMap = bookMap;
- this.bookList2 = bookList2;
- }
- }
配置文件
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/util
- http://www.springframework.org/schema/util/spring-util.xsd
- ">
- <util:list id="outerbookList">
- </util:list>
JAVA MySQL Spring JAVA MySQL Spring JAVA MySQL Spring
7 工厂方式获取bean
特点 : bean标签中定义的class类不是返回的对象的类,而是生产该对象的工厂
工厂模式:GOF 设计模式
spring中给我们定义好了一个工厂接口,可以生产对象的接口,我们可以通过工厂来获取bean
定义工厂对象 实现 FactoryBean接口
- package com.msb.bean;
- import org.springframework.beans.factory.FactoryBean;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public class BookFactory implements FactoryBean
{ - @Override
- public Book getObject() throws Exception {
- Book book=new Book();
- book.setBname("JAVA");
- book.setAuthor("马士兵");
- return book;
- }
- @Override
- public Class<?> getObjectType() {
- return null;
- }
- }
配置文件
测试代码
- @Test
- public void testGetBean(){
- ApplicationContext applicationContext=new
ClassPathXmlApplicationContext("applicationContext5.xml"); - Book book = applicationContext.getBean("book", Book.class);
- System.out.println(book);
- }
Generated with Mybase Desktop 8.2.13

浙公网安备 33010602011771号