Spring的注解开发模式

注解是现在框架流行的开发方式,不同于老式开发方式省略了很多代码
Spring的注解开发模式同样也非常方便。
以下先讲一讲蛋糕式编程,方便记着学的人快速入门

  1. 在spring4之后,想要使用注解形式,必须得要引入aop的包
  2. 在配置文件当中,还得要引入一个context约束
        
          
           
    

最后两个就是context约束

  1. 配置组件扫描,告诉Spring哪个包下的类型使用组合扫描
       
    
  2. 开始使用
        @Component("user") //申明此类是Spring的一个类,bean会自动加入IOC中
          public class User {
             @Value("EZeta") //直接属性注入,不用set方法
             private String name;
             private Integer age;
             @Value("20") //如果提供了set方法,在set方法上添加@value("值");
             public void setAge(Integer age){
               this.age=age;
             }
          }
          
    
搞定!

接下来是注解开发详解

ps由于注解的各个功能都是和xml配置文件管理一一对应的,以下会与xml中的注入,bean配置等一一对应。至于xml怎么配置的,详见:DI三种注入方式 , Bean的配置

  1. @Component
    修改一个类,将这个类交给Spring管理 相当于在配置文件当中配置
    @Component三个衍生注解
    为了更好的进行分层,Spring可以使用其它三个注解, 目前使用哪一个功能都一样 , 后期可能会添加一些属于各自的属性
    • @Controller
      web层
    • @Service
      service层
    • @Repository
      dao层
  2. 属性注入
    • @Value
      就和上述例子一样,普普通通地注入
    • @Autowired
      就是引用类型注入,不同的是不同id了:
       
       
      
      其中'A'就是另一个SpringBean的id,不论是普通注入还是命名空间注入都一样。
      但是在注解开发中:
      @Component("pet") //需要将其标记为Springbean不然不能作为别的类的字段进行引用注入
          public class Pet {
             @Value("666") ;
             private String name;
          }     
        @Component("user") 
          public class User {
             @Value("EZeta") //直接属性注入,不用set方法
             private String name;
             @Autowired  //将Springbean的引用注入,注意此处注解并没有参数,不需要将引用类的id传进去,Spring会在IOC中自动找到
             private Pet pet;
          }     
      
      当然你也可以附上id来注入:用@Qualifier("id")
        @Component("user") 
          public class User {
             @Value("EZeta") //直接属性注入,不用set方法
             private String name;
             @Autowired  
             @Qualifier("pet")
             private Pet pet;
          }     
      
      可以发现用了@Qualifier依然要@Autowired 可以说是非常的智障了,感受下就好,就不要再用了(太傻了)
      但如果真的需要id来注入怎么办,有更好的(记这个:@Resource,别用@Qualifier)
        @Component("user") 
          public class User {
             @Value("EZeta") //直接属性注入,不用set方法
             private String name;
             @Resource(name="pet")
             private Pet pet;
          }     
      
      注意,参数是name="值"
  3. 初始化方法和销毁方法
    对应:
            
    
    • @PostConstruct
      初始化方法
    • @PreDestroy
      销毁方法
      直接把注解打到对应方法上面就好

XML与注解比较

  • XML可以适用任何场景 ,结构清晰,维护方便
  • 注解不是自己提供的类使用不了,开发简单方便
    比如jar包提供的类,你不可能修改人家源代码吧,对吧?

XML与注解整合开发

  • XML管理Bean
  • 注解完成属性注入
  • 使用过程中, 可以不用扫描,扫描是为了类上的注解
    在没有扫描的情况下, 使用属性注入的注解@Resource、 @Value 、@Autowired、@Qulifier:
       
       
       
       
    

总结

注解是非常方便的方法,但是除非是自己一个人写项目,不然纯注解在合作上面很不方便,比如你写好了你的模块,别人在写ta的模块是要看一看你的bean构成,结果要去翻你的代码去看注解吗?显然不好,于是你在配置bean上用xml,DI就用注解。所有最好的开发方式就是:XML与注解整合开发,XML管理Bean,注解完成属性注入。

你可能感兴趣的:(Spring的注解开发模式)