建设网站免费支持php,wordpress百度和分类,动漫网站建设总结,精通网站开发书籍平常的java开发中#xff0c;程序员在某个类中需要依赖其它类的方法#xff0c;通常是new一个依赖类再调用类实例的方法#xff0c;这种开发存在的问题是new的类实例不好统一管理。
spring提出了依赖注入的思想#xff0c;即依赖不由程序员控制#xff0c;而是通过spring…平常的java开发中程序员在某个类中需要依赖其它类的方法通常是new一个依赖类再调用类实例的方法这种开发存在的问题是new的类实例不好统一管理。
spring提出了依赖注入的思想即依赖不由程序员控制而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”通俗的理解是平常我们new一个实例这个实例的控制权是我们程序员而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
spring有4种依赖注入方式
Set方法注入构造器注入静态工厂的方法注入实例工厂的方法注入
按照实现方式分为两类
注解如Autowired配置文件如xml
以下对于4种依赖注入方式分别使用两种实现方式来实现
1、Set方法注入
Set方法注入是最简单、最常用的注入方式。
1.1 注解注入
package com.obob.dao;public class UserDao {public void login() {System.out.println(login...);}
}
package com.obob.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.obob.dao.UserDao;public class UserService {//注解注入autowire注解默认使用类型注入Autowiredprivate UserDao userDao;public void login() {userDao.login();}
}1.2 配置文件注入
UserDao定义不变UserService去掉注解
package com.obob.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();}
}然后使用配置文件
bean nameuserService classcom.obob.service.UserServiceproperty nameuserDao refuserDao /
/bean
bean nameuserDao classcom.obob.dao.UserDao/bean2、构造方法注入
构造方法注入是指带有参数的构造函数注入
2.1 注解注入
package com.obob.service;import org.springframework.beans.factory.annotation.Autowired;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;//注解到构造方法处Autowiredpublic UserService(UserDao userDao) {this.userDao userDao;}public void login() {userDao.login();}
}
2.2 配置文件注入
UserService
package com.obob.service;import org.springframework.beans.factory.annotation.Autowired;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public UserService(UserDao userDao) {this.userDao userDao;}public void login() {userDao.login();}
}
配置文件
bean nameuserService classcom.obob.service.UserServiceconstructor-arg index0 refuserDao/constructor-arg
/bean
bean nameuserDao classcom.obob.dao.UserDao/bean3、静态工厂的方法注入
静态工厂顾名思义就是通过调用静态工厂的方法来获取自己需要的对象。 为了使用Spring的依赖注入IOC我们不直接通过工程类.静态方法()来获取对象而是依然通过spring注入的形式获取
此种方式无通过注解注入
3.1 配置文件注入
UserService
package com.obob.service;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();}
}
Factory
package com.obob;import com.obob.dao.UserDao;public class Factory {public static UserDao initUserDao() {return new UserDao();}
}
配置文件
bean nameuserService classcom.obob.service.UserServiceproperty namestaticUserDao refstaticUserDao /
/bean
bean namestaticUserDao classcom.obob.Factory factory-methodinitUserDao/bean
4、实例工厂的方法注入
实例工厂的意思是获取对象实例的方法不是静态的所以你需要首先new工厂类再调用普通的实例方法
此种方式无通过注解注入
4.1 配置文件注入
UserService
package com.obob.service;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();}
}
Factory
package com.obob;import com.obob.dao.UserDao;public class Factory {public UserDao initUserDao() {return new UserDao();}
}
配置文件
bean nameuserService classcom.obob.service.UserServiceproperty namestaticUserDao refstaticUserDao /
/bean
bean namestaticUserDao factory-beanfactory factory-methodinitUserDao/bean
bean namefactory classcom.obob.Factory/bean5、总结
这四种方式最常用的是1和2set方法、构造方法注入