Spring注解:@Resource、@PreConstruct、@PreDestroy、@Component

要使用Spring的注解,必须在XML文件中配置有属性,告诉人家你要使用注解,Spring容器才会去加载类上的注解:

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="

           http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context-2.5.xsd

        http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    

    <context:annotation-config />

    

</beans>

 

 @Resource注解:

  作用:自动装配属性值

  位置:属性的setter方法上

example:

public class UserService {

    private UserDao userDao;

    

    public User get() {

        return userDao.get();

    } 

    

    public UserDao getUserDao() {

        return userDao;

    }

    

    @Resource(name="userDao")

    public void setUserDao(UserDao userDao) {

        this.userDao = userDao;

    }

}

 

被Resource注解标记的setter方法,Spring容器就会帮你自动装配,这个注解有一个name属性,设置的就是你的要注入那个bean的名字,若你没有填写这个name属性,Spring将自动帮你处理,用方法名去掉set去查找这个bean或者参数名去查找,这也说明了Resource注解是遵循by-name语法的

 

@PreConstruct和@PreDestroy

  解释:@PreConstruct对应bean的初始化方法,@PreDestroy对应bean的销毁方法

  作用:通过这两个注解可以让我们很好的观察着bean的声明周期情况

  位置:放在对应的方法上

 

public class UserService {

    @PostConstruct

    public void init() {

        System.out.println("UserService is initing");

    }

    

    @PreDestroy

    public void destroy() {

        System.out.println("UserService is destroying");

        }

        ......      

}

 

@Component和它同类型注解

  作用:这个注解最大的作用就是自动检测组件,也就是代替了XML中对bean的配置,和它有着相同作用的注解还有@Service、@Repository、@Controller,这些注解在现在还没有什么明显的区别,但是在以后可能在MVC模式上有着很大的不同,可能对应着不同的层,这些纯属个人的猜测。

  位置:bean类上

  提醒:在使用这个注解的时候,还要在XML上配置扫描的属性,告诉人家你的bean在那些包上

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="

           http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context-2.5.xsd

        http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    

    <context:annotation-config />

    

    <context:component-scan base-package="com.xujianguo" />

    

</beans>

example:

@Component

public class UserService {

   //代码

}

 其实这个Component注解也是有个name属性的,跟XML中定义bean的id一样,如果你有天就按照name的值来,如果没有的话就按照开头小写的非限定类名作为bean的id

你可能感兴趣的:(component)