Spring注解编程的发展过程

e06fd65367f24b3695fbaf0c814338d3.png

注解详解

@Transaction

在Spring1.2版本的时候提供了 (org.springframework.transaction.annotation )注解。简化了事务的操作.

@Required

@Required注解诞生于spring2.0,如果你在某个java类的某个set方法上使用了该注释,那么该set方法对应的属性在xml配置文件中必须被设置,否则就会报错!!!

public class UserServiceIMpl implements UserService {

    private UserService userService;

    public UserService getUserService() {
        return userService;
    }

    @Required
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

如果在xml文件中我们不设置对应的属性就会给出错误的提示。

image.png

@Import注解

@Import注解出自Spring3.0版本,此时spring3.0还属于注解方式开发的过渡期,当然类似于@Bean、@Configuration注解也是在spring3.0版本诞生的。@Import注解于<import>标签的作用是相同的,在spring配置文件中,导入另一个配置文件。

@Import注解作用

@import注解相对于标签import还增加了bean对象的注入功能,下面是三种初始化对象的方式方式:

1. @Import(UserService.class)
这种方式最为简单,作用是将UserService类进行初始化,并注册到IOC容器中

2. 实现ImportSelector接口
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
    return new String[]{Logger.class.getName(), Cache.class.getName()};
}
这种方式是重写父类接口,作用是返回需要注册的Bean对象的全类名

3. 实现ImportBeanDefinitionRegistrar接口,这种方式可以重写父类接口方法,直接使用BeanDefinitionRegistry,将我们的Bean对象注入到IOC容器中
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
    
    RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Logger.class);
    registry.registerBeanDefinition("logger666", rootBeanDefinition);

    RootBeanDefinition cache = new RootBeanDefinition(Cache.class);
    registry.registerBeanDefinition("cache666", cache);
        }
    }
}





Zeran
32 声望4 粉丝

学而不思则罔,思而不学则殆。