完全注解开发理解。通过JAVA配置类代码配置spring应用程序。使用注解代替原来在XML配置文件中的配置。是JAVA类。
实验一:配置类和扫描注解。如何扫描包(即配置文件确定扫描范围)和引入外部的配置文件。
一、创建一个项目。二、建两个组件类。三、放入IOC容器:用注解@Controller和@Service。四、想在Controller层引用Service:直接在Controller声明一个Service及在类上加一个@Autowired注解,这就完成了依赖注入。
五、接着要做一个包扫描。以前是在XML配置文件中进行。
现在我们要用一个Java类即配置类代替XML配置文件方式,使用注解替代里面的具体功能。
一、创建一个配置类。a、用@Configuration注解将一个普通的类标记为Spring配置类。b、用@ComponentScan注解,可以配置扫描包,代替<context:component-scan标签。c、用@PropertySource注解读取外部配置,代替<context:property-placeholder标签。目前是使用完全配置类,不需要XML配置文件了
现在配置类有了,我们想取一下里面的组件bean:我们还是创建一个IOC容器,不过此时不用ClassPathXmlApplicationContext这个类型IOC容器创建了,因为读的是配置类而不是XML配置文件了(三SpringIoc核心容器那有讲分类)
用的是AnnotationConfigApplicationContext这个类型的IOC容器。两种方法
实验二:@Bean定义组件。场景需求:将Druid连接池对象存储到Ioc容器。需求分析:第三方jar包的类,添加到ioc容器,无法使用@Component等相关注解!因为源码jar包内容为只读模式!是因为第三方类进行IOC管理,无法直接使用@Component相关注解而出现的。(两种解决方案:1、XML方式可以使用<bean标签。2、配置类方式,可以使用方法返回值+@Bean注解)
包扫描和外部配置文件引用已经被替换为配置类方式管理了而不是XML方式。接下来看如何进行第三方类的声明(数据库的druid连接池、jdbcTemplate等)。
基于配置类方式实现:官方笔记更通俗易懂,其中引入外部配置文件是使用形参列表引入的,即如果这些属性只在这个方法中用,可以在形参列表中声明这些属性同时用@value注解。因为@value注解是可以作用到形参列表中的。
4.4.4实验三:高级特性:@Bean注解细节。问题1:@Bean生成BeanName问题。问题2:@Bean 初始化和销毁方法指定即周期方法如何指定。问题3:@Bean Scope作用域
问题4:第三方类方法之间依赖。即如何引用其他ioc里组件
4.4.5实验四:高级特性:@Import扩展:该注释允许从另一个配置类加载@Bean定义。即将多个配置类整合到一个配置类中。该方法简化了容器实例化,因为只需要处理一个类,而不是要求你在构造期间记住可能大量的@Configuration配置类。注意:都得是配置类才能用。
测试。1、准备两个配置类
2、加载两个配置类到ioc容器中。此方法需要记住所有配置类。用@Import将第二个配置类整合到第一个配置类中更好。
总结:注意:配置类的作用是替代XML配置文件。@Bean定义组件。场景需求:将Druid连接池对象存储到Ioc容器。需求分析:第三方jar包的类,添加到ioc容器,无法使用@Component等相关注解!因为源码jar包内容为只读模式!是因为第三方类进行IOC管理,无法直接使用@Component相关注解而出现的。(两种解决方案:1、XML方式可以使用<bean标签。2、配置类方式,可以使用方法返回值+@Bean注解)
4.4.5实验五:基于注解+配置类方式整合三层架构组件。一、需求分析。二、数据库准备。三、项目准备。四、三层架构搭建和实现。等等和4.3.5的实验都一样。五、三层架构IOC配置不一样,此处是三层架构IOC配置类,用配置类代替XML配置文件。