• 一些开发中用到的注解


    1.@controller 控制器(注入服务)

    2.@service  服务(注入dao)

    3.@repository  dao(实现dao访问)

    4.@component (把普通的pojo实例化到spring容器中,相当于配置文件中的<bean id="" class= ""/>)

        泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

    一、@component

        定义spring管理bean

    二、@repository

       @component扩展,被@repository注解的pojo类表示dao层实现,从而见到该注解就想到dao层实现,使用方式和@component相同。

     @service:表示service层实现

    三、<content:component-scan base-package="com.mmnc">

        其中base-package为需要扫描的包

    四、@Resource和@Autowired注解都是用来实现依赖注入的,只是@Autowired按byType自动注入,而@Resource默认是按byName自动注入的。

           @Resource有两个重要的属性,分别是name和type

           spring将name属性解析为bean的名字,而type属性则是解析为bean的类型。所以如果使用name属性,则使用byName的自动注入。

      @Resource依赖注入时查找bean的规则:

       1.既不指定name属性,也不指定type属性,则自动按byName方式进行查找。如果没有找到符合的bean,则回退为一个原始类型进行查找。

    @Value("#{}")与@Value("${}")的区别

     @RestController
    @RequestMapping("/login")
    @Component
    public class LoginController {
     
     @Value("#{1}")
     private int number; //获取数字 1
     
     @Value("#{'Spring Expression Language'}") //获取字符串常量
     private String str;
     
     @Value("#{dataSource.url}") //获取bean的属性
     private String jdbcUrl;
     
     @Autowired
     private DataSourceTransactionManager transactionManager;
     
     @RequestMapping("login")
     public String login(String name,String password) throws FileNotFoundException{
      System.out.println(number);
      System.out.println(str);
      System.out.println(jdbcUrl);
      return "login";
     }
    }

    当bean通过@Value(#{“”})获取其他bean的属性,或者调用其他bean的方法时,只要该bean(A)能够访问到被调用的bean(B),那就说明要么A和B时在同一个容器,或者B所在容器是A所在容器的父容器。例如上面的代码,dataSource这个bean一般是在springContext.xml文件中申明的,而loginController这个bean一般是在springMVC.xml文件中申明的,虽然这两个bean   不在一个容器,但是loginCOntroller所在容器继承了dataSource所在的容器。

    @Value(“${}”)可以获取对应属性文件中定义的属性值。

    @postconstruct初始化的操作

       从javaEE 5规范开始,servlet中增加了两个影响servlet生命周期的注解;@PostConstruct  @PreDestroy

    这两个注解被用来修饰一个非静态的void()方法。

     @PostConstruct

     public void init(){}

    或者  public @PostConstruct void init(){}

    被@PostConstruct修饰的方法会在服务器加载servlet的时候运行,并且只会被服务器执行一次。

    PostConstruct在构造函数之后执行,init()方法之前执行。

    PreDestroy方法在destroy方法执行之后执行

    服务器加载servlet ------  servlet构造函数 -------  PostConstruct  ---------- Init  --------service -------destroy  --------PreDestroy  -------服务器卸载servlet完毕

    需要注意的是,注解会多多少少的影响服务器的启动速度,服务器在启动时候回遍历web应用下(WEB-INF/classes下的所有class文件与WEB-INF/lib)的所有jar文件,检查哪些类使用了注解。如果应用程序中没有使用任何注解,可以在web.xml设置。

        

       

  • 相关阅读:
    C++窗体应用程序
    C++继承方式简介及公有继承
    C++(继承的基本概念和语法)
    python(12)---科赫特雪花
    python(11)---pyinstaller
    20200914 day9 数据结构复习(一)
    20200914 day9 刷题记录
    20200913 day8模拟(二)
    20200912 day7 刷题记录
    20200912 day7 图论复习(一)
  • 原文地址:https://www.cnblogs.com/woniufei/p/9511238.html
Copyright © 2020-2023  润新知