XML配置方式
属性注入
构造注入: 创建有参构造方法,同时必须创建无参构造方法
applicatio.xml中注入
还可以通过下标定位参数
<
测试结果
设置注入
Java对象提供对象的setter方法
有参构造不是必须的,但是无参构造方法是必须的! set方法注入就是利用对象属性的set方法给对像赋值,相当于使用无参构造方法创建一个user对象,然后调用对象中的set方法给各个属性赋值
package com.sxt.bean;public class User { private Integer id; private String name; private Integer age; public Integer getId() { return id; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } public User() { super(); } public void setId(Integer id) { this.id = id; } 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; }}
application.xml配置
测试
P名称空间注入
p名称空间注入本质上还是set方法注入,只是写法不同
package com.sxt.bean;public class User { private Integer id; private String name; private Integer age; public Integer getId() { return id; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } public User() { super(); } public void setId(Integer id) { this.id = id; } 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; }}
application.xml配置
测试
对像,数组,list集合,map和Properties属性注入的XML配置方式
User类和Cat类
package com.sxt.bean;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Properties;public class User { private Integer id; private String name; private Integer age; private Cat cat;//对象注入 private Cat[] cats;//数组注入 private Liststu;//集合注入 private Map maps;//map注入 private Properties prope;//Properties 属性注入 @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + ", cat=" + cat + ", cats=" + Arrays.toString(cats) + ", stu=" + stu + ", maps=" + maps + ", prope=" + prope + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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 Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public Cat[] getCats() { return cats; } public void setCats(Cat[] cats) { this.cats = cats; } public List getStu() { return stu; } public void setStu(List stu) { this.stu = stu; } public Map getMaps() { return maps; } public void setMaps(Map maps) { this.maps = maps; } public Properties getPrope() { return prope; } public void setPrope(Properties prope) { this.prope = prope; } public User() { super(); } }
package com.sxt.bean;public class Cat { private String nick; private String color; public String getNick() { return nick; } public void setNick(String nick) { this.nick = nick; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}
application.xml配置
admin 123
测试
package com.sxt.test;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.sxt.bean.Cat;import com.sxt.bean.User;public class UserTest { @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml"); User bean = (User) ac.getBean(User.class); System.out.println(bean); System.out.println("打印数组"); Cat[] cats = bean.getCats(); for (Cat cat : cats) { System.out.println(cat.getNick()+"+"+cat.getColor()); } System.out.println("打印list集合"); Liststu = bean.getStu(); for (Cat cat : stu) { System.out.println(cat.getNick()+"+"+cat.getColor()); } System.out.println("打印map集合"); Map maps = bean.getMaps(); Set set = maps.keySet(); for (String sys : set) { System.out.println(maps.get(sys)+"+"+sys); } System.out.println("打印Properties 属性"); Properties prope = bean.getPrope(); System.out.println(prope.getProperty("username")+"+"+prope.getProperty("password")); }}
创建综合案例
引入相关jar包
1.创建项目dao层,service层,和他们实现类
package com.sxt.dao;/** * dao层代码 * @author Administrator * */public interface IUserDao { String add(String msg);}
package com.sxt.dao.impl;import com.sxt.dao.IUserDao;/** * dao层实现类代码 * @author Administrator * */public class UserDaoImpl implements IUserDao{ @Override public String add(String msg) { System.out.println("----->"+msg); return "hello"; }}
package com.sxt.service;/** * service层代码 * @author Administrator * */public interface IUserService { String add(String msg);}
package com.sxt.service.impl;import com.sxt.dao.IUserDao;import com.sxt.service.IUserService;/** * service层实现类代码 * @author Administrator * */public class UserServiceImpl implements IUserService{ private IUserDao dao; /** * 这是设值注入的方法 * @param dao */ public void setDao(IUserDao dao) { this.dao = dao; } @Override public String add(String msg) { return dao.add(msg); }}
2.创建Controller层
package com.sxt.controller;import com.sxt.service.IUserService;/** * controller层代码 * @author Administrator * */public class UserConrtroller { private IUserService userService; /** * * 这是设值注入的方法 * @param userService */ public void setUserService(IUserService userService) { this.userService = userService; } public void add(String msg) { System.out.println("-------"+userService.add(msg)); }}
3.在application.xml中注册
4.测试
public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml"); UserConrtroller bean = ac.getBean(UserConrtroller.class); bean.add("aaa"); }}