IoC容器
作用:管理所有bean及其相互间的依赖关系。
IoC两种设计模式:
反射:反射就是把java类中的各种成分映射成一个个的Java对象
工厂模式:
把IoC容器当做一个工厂,在配置文件或注解中给出定义,然后利用反射技术,根据给出的类名生成相应的对象。对象生成的代码及对象之间的依赖关系在配置文件中定义,实现了解耦。
以MessageService为例
MessageService类
package com.spring.IoC;
public interface MessageService {
String getMessage();
}
MessageServiceImpl类
package com.spring.IoC;
public class MessageServiceImpl implements MessageService {
private String username;
private int age;
public MessageServiceImpl(String username, int age) {
this.username = username;
this.age = age;
}
public String getMessage(){
return "Hello World"+username+",age is "+age;
}
}
MessagePrinter类
package com.spring.IoC;
public class MessagePrinter {
final private MessageService service;
public MessagePrinter(MessageService service){
this.service=service;
}
public void printMessage(){
System.out.print(this. service.getMessage());
}
}
MessageApp
package com.spring.IoC;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MessageApp {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext context= new ClassPathXmlApplicationContext("spring.xml");
MessagePrinter printer=context.getBean(MessagePrinter.class);
printer.printMessage();
}
}
beans(此处为spring.xml)
<bean id="messageServiceImpl" class="com.spring.IoC.MessageServiceImpl">
<constructor-arg name="username" value="Jerry"/>
<constructor-arg name="age" value="20"/>
</bean>
<bean id="messagePrinter" class="com.spring.IoC.MessagePrinter">
<constructor-arg name="service" ref="messageServiceImpl"/>
</bean>
结果为:
结果.png
网友评论