发表于: 2017-09-21 21:45:57
1 809
今天完成的内容:
(1)补充bean的概念:有方法或属性的类实例化后的实例对象要加上注册Bean到Spring IoC的注解,Bean通过反射、代理来实现,代表类拥有该拥有的东西。注解分两类:一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired, @Resource配合到一起,把对象、属性、方法完美组装。
(1)写了很简单的spring setter依赖注入的例子。
接口及其实现:
public interface IOutputGenerator {
public void generateOutput();
}
public class CsvOutputGenerator implements IOutputGenerator {
public void generateOutput() {
System.out.println("This is Csv Output Generator");
}
}
一个辅助类,之后使用Spring 来注入 IOutputGenerator。
public class OutputHelper {
IOutputGenerator outputGenerator;
public void generateOutput() {
outputGenerator.generateOutput();
}
//DI via setter method
public void setOutputGenerator(IOutputGenerator outputGenerator) {
this.outputGenerator = outputGenerator;
}
}
配置文件:通过name,和ref标签,outputGenerator是CsvOutputGenerator的实例,通过outputGenerator和outputGenerator可找到bean。
<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.5.xsd">
<bean id="OutputHelper" class="output.OutputHelper">
<property name="outputGenerator" ref="CsvOutputGenerator" />
</bean>
<bean id="CsvOutputGenerator" class="output.CsvOutputGenerator" />
</beans>
测试类:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import output.OutputHelper;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
OutputHelper output = (OutputHelper) context.getBean("OutputHelper");
output.generateOutput();
}
}
test run结果:正常输出。
明天的计划:学习spring的其他知识,bean的生命周期等。
禅道:http://task.ptteng.com/zentao/task-view-10628.html
评论