一些开发中用到的注解

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设置。

 

    

   

posted @ 2018-08-21 14:41  飞蜗牛  阅读(157)  评论(0编辑  收藏  举报