欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本篇我们一起来了解SpringIOC相关知识以及其核心点。
目前Java体系常见的IOC框架有Google Guice,PicoContainer,Dagger,Spring Framework,本篇来进行讲解Spring Framework的IOC(Spring IOC) 本篇示例代码下载
1.什么是IOC?
IOC的意思就是控制反转(Inversion of Control),将原POJO内部管理其他对象的引用转换为IOC容器统一管理对象引用,在需要使用的时候从容器获取Bean即可。
将对象交给IOC容器统一管理,是为了更好使用DI(Dependency Inject,依赖注入)进行POJO之间依赖关系的解耦。DI(Dependency Inject,依赖注入)即代码里对象之间的依赖关系转移到容器中进行装配,这样能很灵活地通过面向接口进行编程。
2.了解SpringIOC定位
首先我们可以看到Spring4的庞大模块中(这里我们不针对Spring模块逐一介绍,将会在第四章:Spring专栏进行特别介绍),IOC功能位于Spring核心容器(Core Container模块)中,也是Spring生态圈的所有模块中的核心支撑。
3.快速使用Spring IOC
Spring的XML配置文件如下,这里使用XML配置文件的形式配置SpringBean(对于理解比较友好) 示例代码下载
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean class="com.leanspringioc.AdminUser" id="adminUser"/> <bean class="com.leanspringioc.VipUser" id="vipUser"/> <bean class="com.leanspringioc.TestIOC" id="testIOC"> <property name="iUser" ref="vipUser"/> </bean> </beans>
/** * 在applicationContext.xml文件中向testIOCBean中注入vipUser和adminUser进行测试 * * @param args */ public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); TestIOC testIOC = (TestIOC) context.getBean("testIOC"); testIOC.say(); }
4.Spring IOC相关常用注解
Spring IOC早以兼容JSP-250(Dependency Injection for Java),后又逐步兼容了JSP-330规范。
自动扫描装配Bean的相关注解
@Component |
将java类标记成一个Spring Bean组件 |
@Service |
将业务层实现类标记成一个Spring Bean组件 |
@Controller |
将表现层类标记成一个Spring Bean组件 |
@Repository |
将一个持久层实现类标记成一个Spring Bean组件 |
作用域相关注解
@scope |
用来指定bean的作用域,组件默认是单例的作用域,不使用单例则声明此注解 singleton---单例 只创建一个对象。 prototype---原型 想创建多少个就创建多少了。 request---针对Web项目,不同的请求创建单独的Bean对象,同一个请求共享一个Bean。 session---针对Web项目,不同的会话创建单独的Bean对象,同一个会话共享一个Bean。 |
自动装配Bean相关注解
@Autowired |
通过类型匹配,通过名称则需要Spring的@Qualifier注解配合 |
@Resource |
根据Bean的名称去匹配,获取不到再根据类型 |
Java开发之上帝之眼系列教程其他文章
本篇部分资料来源如下(排名不分先后)
https://www.cnblogs.com/hellokitty1/p/5074743.html
勘误&感谢
本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。
原文地址:https://www.cnblogs.com/jimisun/p/9714797.html