spice and wolfspice and wolf Be the One you wanna Be

springIOC和DI

springIoc(bean标签)的xml配置

  • bean标签作用。用于配制被spring容器管理的bean的信息,默认情况下调用无参构造函数。
  • bean标签属性。
    • id
    • class
    • init-method
    • destroy-method
    • scope
      • singleton
      • prototype
      • request
      • session
      • global session
  • bean实例化方式。
    • 无参构造函数
    • 静态工厂
    • 实例工厂

springDI的xml配置

  • DI方式
    • 构造方法
    • set方式
      • 手动装配
      • 自动装配(注解)
  • DI注入的类型
    • 简单类型
    • 引用类型
    • 集合和数组类型

springIoc的xml与注解混合配置

  • 使用方式
    1. spring配置文件中配置context:component-scan标签
    2. 在类上面加上@Component、@Controller、@Service、@Repository等注解

springDI的注解配置

  • @Autowired
    • 默认按类型装配
    • 由AutowiredAnnotationBeanPostProcessor类实现
    • 是spring自带的注解
    • 默认情况下要求依赖对象必须存在,如果不存在需要给属性赋值required=false,不然会报错
    • 按名称装配需要配合@Qualifier注解使用
  • @Qualifier
    • 在自动按照类型装配的基础之上,再按照bean的id注入
    • 在给字段注入时不能独立使用,必须配合@Autowired一起使用
    • 给方法参数注入时,可以独立使用
  • @Resource
    • 默认按名称装配
    • 属于J2EE JSR250规范的实现,是Java自带的
    • name属性一旦指定,则只会根据名称装配
  • @Inject
    • 根据类型装配,如果需要按照名称装配,需要配合@Named使用
    • 是JSR330中的规范,是Java自带的
    • 可以用在变量、setter方法和构造函数上
  • @Value
    • 给基本类型和String类型注入
    • 可以使用占位符获取属性文件中的值
  • @PostConstruct
  • @PreDestroy

springIoc纯注解配置

  • 改为纯注解方式需要解决的问题及解决方法
    • 注解扫描配置如何实现替换(<context:component-scan>和<context:property-placeholder>)?用@ComponentScan注解修饰被@Configuration修饰的类,并在basePackage属性中指定扫描的包路径;用@PropertySource注解修饰被@Configuration修饰的类,并指明属性文件路径。
    • 第三方代码不能在源代码上直接修改(增加注解),该如何注入?在@Configuration配置文件类里面加入返回相应第三方对象的方法,并用@Bean标签修饰。
    • 去掉xml后,如何创建ApplicationContext?@Configuration注解修饰的类会替代xml文件作为spring上下文配置存在。
    • 多个配置文件相互引用问题。在多个@Configuration类互相引用时,用@Import作为注解指明另一个配置类的地址。
    • 创建纯注解方式上下文容器。
      • ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        UserService service = context.getBean(UserService.class);
        service.saveUser();

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Press ESC to close