Spring中的IOC自动装配和xml自动装配

目录

1.为什么需要自动装配?

2.基于xml的自动装配

3.基于注解管理bean

3.Autowired注意事项以及autowired工作流程

总结:


1.为什么需要自动装配?

  • 为了实现依赖注入,使得资源在利用的时候没必要多次创建
  • 为了更好的管理资源,使得高内聚低耦合
  • 为了解决代码复杂,不易操作,和解决代码复用性问题

2.基于xml的自动装配

1.分析web项目中的controller(控制层)和service(业务层)和dao(持久层)

控制层----->业务层----->持久层

2.autowire.xml.xml配置文件

持久层


业务层


控制层



其中里面还有:autowire:byType---这是根据类型进行自动装配
自动装配方式:byType
如果又不唯一的bean,则会抛出异常:NoUniqueBeanDefinitionException

3.自动装配的效果

@Test
public void testAutoWireByXML(){
    ApplicationContext ac = new ClassPathXmlApplicationContext("autowire-xml.xml");
UserController userController = ac.getBean(UserController.class);
    userController.saveUser();
}

3.基于注解管理bean

1.常用的四个标记标签

根据指定的策略在IOC容器中匹配莫个bean,然后自动为bean中的类类型属性接口赋值

常用的控制组件注解

@Component:将类标识为普通组件

@Controller:将类标识为控制层组件

@Service:将类标 识为业务层组件

@Repository:将类标识为持久层组件

通过注解+扫描获取的bean的id,默认为类的小驼峰,即类名的首字母为小写的结果

可以通过注解组件的注解value属性设置bean的自定义的id

2.为pom引入依赖


    
    
        org.springframework
        spring-context
        5.3.1
    

    
        junit
        junit
        4.12
        test
    

3.在三层架构表上注解之后,在xml中进行配置

  // 扫描组件


扫描组件可以排除也可以指定


排除标签





包含标签


4.测试注解的是否可行

@Test
public void testAutowireByAnnotation(){
    ApplicationContext ac = new
    ClassPathXmlApplicationContext("applicationContext.xml");
    UserController userController = ac.getBean(UserController.class);
    System.out.println(userController);
}

3.Autowired注意事项以及autowired工作流程

1.Autowired注意事项

  • @Autowired注解可以标记在构造器和set方法上
  • 在成员变量上直接标记@Autowired注解即可完成自动装配,不需要提供setXxx()方法
  • 参考基于xml的自动装配 在UserController中声明UserService对象 在UserServiceImpl中声明UserDao对象
  • 自动装配,我们只需要不忘记依赖和扫描组件即可

2.autowired工作流程

Spring中的IOC自动装配和xml自动装配_第1张图片

总结:

  • 实现了依赖注入并且有两种方法
  • 在自动装配的过程中我们既需要使用xml和注解或者xml自己,个人感觉还是xml加注解的方式方便一些,避免了xml中大量的文字信息的显示,可重复代码的出现
  • 四种标签应该牢记,Component,controlller,srvice,Repository

你可能感兴趣的:(spring,xml,java)