依赖注入1
3
依赖注入:
要把容器中的userDao通过userService中的setUserDao方法注给它
UserService接口:
package com.xx.service;
public interface UserService {
public void save();
}
UserServiceimpl.java:
package com.xx.service.impl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xx.dao.UserDao;
import com.xx.service.UserService;
public class UserServiceimpl implements UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
//注给Service
}
public void save() {
//ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
//UserDao userDao=(UserDao)app.getBean("userDao");
userDao.save();
}
}
application.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1.无参构造方法实例化 -->
<!-- <bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy"></bean> -->
<!-- scope=singleton/prototype/request/session -->
<!-- 2.静态工厂方法实例化 -->
<!--<bean id="userDao" class="com.xx.factory.StaticFactory" factory-method="getUserDao"></bean> -->
<!-- 3.工厂方法实例化 -->
<bean id="factory" class="com.xx.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>
<bean id="userService" class="com.xx.service.impl.UserServiceimpl" >
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
UserController:
package com.xx.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xx.service.UserService;
public class UserController {
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
UserService userService=(UserService)app.getBean("userService");
userService.save();
}
}
依赖注入4
依赖注入5
依赖注入6
UserDaoimpl.java
package com.impl;
import com.xx.dao.UserDao;
public class UserDaoimpl implements UserDao{
private String username;
private int age;
//无参构建
public UserDaoimpl() {
System.out.println("UserDaoimpl创建-----");
}
public void init() {
System.out.println("初始化方法----");
}
public void destroy() {
System.out.println("销毁方法----");
}
public void save() {
System.out.println("save running");
// TODO Auto-generated method stub
System.out.println(username+"=="+age);
}
public void setUsername(String username) {
this.username = username;
}
public void setAge(int age) {
this.age = age;
}
}
application.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1.无参构造方法实例化 -->
<!-- <bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy"></bean> -->
<!-- scope=singleton/prototype/request/session -->
<!-- 2.静态工厂方法实例化 -->
<!--<bean id="userDao" class="com.xx.factory.StaticFactory" factory-method="getUserDao"></bean> -->
<!-- 3.工厂方法实例化 -->
<!-- <bean id="factory" class="com.xx.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean> -->
<!-- <bean id="userService" class="com.xx.service.impl.UserServiceimpl" >
<property name="userDao" ref="userDao"></property>
</bean> -->
<!-- 有参构造把userDao注入 -->
<bean id="userService" class="com.xx.service.impl.UserServiceimpl" >
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
<bean id="userDao" class="com.impl.UserDaoimpl" >
<property name="username" value="Amity"></property>
<property name="age" value="18"></property>
</bean>
</beans>
依赖注入7
UserController.java:
package com.xx.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xx.service.UserService;
import com.xx.service.impl.UserServiceimpl;
public class UserController {
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext("application.xml");
UserService userService=(UserService)app.getBean("userService");
userService.save();//从容器里拿的
/*
UserService userService2=new UserServiceimpl();
userService2.save();
*/
}
}
package com.impl;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import com.xx.dao.UserDao;
import com.xx.domain.User;
public class UserDaoimpl implements UserDao{
private List<String> strList;
private Map<String,User> userMap;
private Properties properties;
private String username;
private int age;
//无参构建
public UserDaoimpl() {
System.out.println("UserDaoimpl创建-----");
}
public void init() {
System.out.println("初始化方法----");
}
public void destroy() {
System.out.println("销毁方法----");
}
public void save() {
System.out.println("save running");
// TODO Auto-generated method stub
//System.out.println(username+"=="+age);
System.out.println(strList);
System.out.println(userMap);
System.out.println(properties);
}
public List<String> getStrList() {
return strList;
}
public void setStrList(List<String> strList) {
this.strList = strList;
}
public Map<String, User> getUserMap() {
return userMap;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void setUsername(String username) {
this.username = username;
}
public void setAge(int age) {
this.age = age;
}
}
package com.xx.domain;
public class User {
private String name;
private String addr;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "User [name=" + name + ", addr=" + addr + "]";
}
}
application.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1.无参构造方法实例化 -->
<!-- <bean id="userDao" class="com.impl.UserDaoimpl" scope="singleton" init-method="init" destroy-method="destroy"></bean> -->
<!-- scope=singleton/prototype/request/session -->
<!-- 2.静态工厂方法实例化 -->
<!--<bean id="userDao" class="com.xx.factory.StaticFactory" factory-method="getUserDao"></bean> -->
<!-- 3.工厂方法实例化 -->
<!-- <bean id="factory" class="com.xx.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean> -->
<!-- <bean id="userService" class="com.xx.service.impl.UserServiceimpl" >
<property name="userDao" ref="userDao"></property>
</bean> -->
<!-- 有参构造把userDao注入 -->
<bean id="userService" class="com.xx.service.impl.UserServiceimpl" >
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
<!--
<bean id="userDao" class="com.impl.UserDaoimpl" >
<property name="username" value="Amity"></property>
<property name="age" value="18"></property>
</bean> -->
<bean id="userDao" class="com.impl.UserDaoimpl" >
<property name="strList">
<list>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="u1" value-ref="user1"></entry>
<entry key="u2" value-ref="user2"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">pp1</prop>
<prop key="p2">pp2</prop>
<prop key="p3">pp3</prop>
</props>
</property>
</bean>
<bean id="user1" class="com.xx.domain.User">
<property name="name" value="Amity"></property>
<property name="addr" value="BJ"></property>
</bean>
<bean id="user2" class="com.xx.domain.User">
<property name="name" value="xiaohua"></property>
<property name="addr" value="天津"></property>
</bean>
</beans>