Spring原理简介

2018-10-26  本文已影响0人  义焃

Spring原理简介

在用ssh(Struts+Spring+Hibernate)实现的mvc模式中Spring是作为连接Struts和Hibernate的控制层。
与Spring框架相关的概念有以下:

demo:(仅仅解释了什么是依赖注入DI或者叫反转控制IOC)

1、首先看一个原来的操作

 //User.java 
package org.myspring; 
public class User { 
private String username; 
private int age; 
public int getAge() { return age; } 
public void setAge(int age) { this.age = age; }
public String getUsername() { return username; } 
public void setUsername(String username) { this.username = username; } }
 //Test.java package org.myspring; public class Test { public static void main(String[] args) { User user=new User(); user.setUsername("zhangsan"); System.out.println(user.getUsername()); } } 

以上是原始的做法,产生的问题是:如果想要把zhangsan改为lisi则需要在Test类中修改代码,这样是一种紧耦合,改动一个类就牵扯到另外一个类。 松耦合的情况是User.java和Test.java这两个类都不需要改动,就能实现输出不同username属性的效果,这就需要加入Spring的IOC/DI机制。方法如下:

2、
MyEclipse->Add Spring Capabilities...->仅加入核心包即可,这样就生成了applicationContext.xml配置文件

3、修改applicationContext.xml:在xml文件的编辑页中 右键->Spring->New Bean,在弹出窗口中进行如下图的设置。 <?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-2.0.xsd"> <bean id="user" class="org.myspring.User" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> <property name="username"> <value>zhangsan</value> </property> <property name="age"> <value>25</value> </property> </bean> </beans>

4、新的测试类 //Test.java package org.myspring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext c FileSystemXmlApplicationContext("src/org/myspring/applicationContext.xml"); User user=(User)context.getBean("user"); System.out.println("name:"+user.getUsername()+"; age:"+user.getAge()); } } 注意:在上面的代码中context.getBean()返回的是一个Object对象,需要进行相应的类对象的转换。在代码中没有出现用new来实例化对象的语句,实现了Test类跟User类的松耦合。对象的实例化都在xml配置文件中实现了。

上一篇下一篇

猜你喜欢

热点阅读