Java:
1.8
javaMaven:
3
springSpringFramework版本以及各組件成員:
5.1.1.RELEASE
this
- spring-context
- spring-core
- spring-beans
分別有兩種注入形式:code
例子中的BeanUser
是個"啞吧", 不具有表達能力. 它但願能借用Bean
的sayHelloWorld
來講兩句話, 以表達本身第一次加入程序你們庭的喜悅之情.xml
具備sayHelloWorld
的bean - Bean.java
對象
❗
這個"Bean"並不符合JavaBean規範, 只是根據Spring中的配置順口叫的...
具體的JavaBean能夠另行搜索.get
package noioo; public class Bean { public void sayHelloWorld(){ System.out.println("Hello World"); } }
這是想說話的 - BeanUser.java
it
package noioo; public class BeanUser { private Bean bean; // need to SayHelloWorld public BeanUser(Bean bean){ this.bean = bean; } // user public void useBean(){ bean.sayHelloWorld(); } }
srping容器, 配置依賴注入的元數據 - spring-beans.xml
io
<?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.xsd"> <!--被使用(被依賴)的Bean--> <bean id="bean" class="noioo.Bean"/> <!--bean的使用者--> <bean id="beanUser" class="noioo.BeanUser"> <!--代表須要構造注入, 並指定ref=所依賴bean的名字--> <constructor-arg ref="bean"/> </bean> </beans>
這是第三方調用方(執行者), BeanUser
總得有我的來調用它的方法.class
package noioo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainRunner { public static void main(String[] args){ // 加載容器 ApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml"); // 利用容器對象(上下文)來獲取beanUser對象, 此時會依據beanUser在容器中的配置元數據進行注入. BeanUser beanUser = (BeanUser)context.getBean("beanUser"); // 調用方法: 代表了beanUser能夠使用bean中的方法, 是已經得到了bean對象的了. beanUser.useBean(); } }
運行MainRunner
, 會出現如下結果:
Hello World Process finished with exit code 0
還是上面的例子.
具備sayHelloWorld
的bean - Bean.java
package noioo; public class Bean { public void sayHelloWorld(){ System.out.println("Hello World"); } }
這是想說話的 - BeanUser.java
package noioo; public class BeanUser { private Bean bean; public Bean getBean() { return bean; } public void setBean(Bean bean) { this.bean = bean; } public void useBean(){ bean.sayHelloWorld(); } }
配置文件 - spring-beans.xml
<?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.xsd"> <!--被使用(被依賴)的Bean--> <bean id="bean" class="noioo.Bean"/> <!--bean的使用者--> <bean id="beanUser" class="noioo.BeanUser"> <!--代表須要構造注入, 並指定ref=所依賴bean的名字--> <property name="bean" ref="bean"/> </bean> </beans>
執行者
package noioo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainRunner { public static void main(String[] args){ // 加載容器 ApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml"); // 利用容器對象(上下文)來獲取beanUser對象, 此時會依據beanUser在容器中的配置元數據進行注入. BeanUser beanUser = (BeanUser)context.getBean("beanUser"); // 調用方法: 代表了beanUser能夠使用bean中的方法, 是已經得到了bean對象的了. beanUser.useBean(); } }
Hello World Process finished with exit code 0