发表于: 2017-09-21 21:45:57

1 810


今天完成的内容:

(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


返回列表 返回列表
评论

    分享到