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