文章目录

  • 1、使用注解时的配置文件
  • 2、@Component 系列注解
  • 3、类型注解与名称注解
  • 4、Spring的生命周期方法注解
  • 5、Bean的作用范围注解
  • 6、传统XML配置和注解配置混合使用



注解: 代码中的特殊标记,注解可以使用在类、方法、属性上面,完成一些特殊的功能。

格式: @注解名称(属性=属性值)

1、使用注解时的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 注意Beans的属性配置 -->
<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/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描  扫描指定包下的所有类  -->
    <context:component-scan base-package="com.moc.demo"/>
	
    <!-- 下面一句是只单独使用属性注解时的配置  -->
    <context:annotation-config/>
  
    
    <!-- Bean 由XML管理, 属性注入交给注解管理 -->
    <bean id="productService" class="com.moc.demo.ProductService">
        <property name="productDao" ref="productDao"/>
        <property name="catagoryDao" ref="categoryDao"/>
    </bean>

    <bean id="productDao" class="com.moc.demo.ProductDao"/>
    <bean id="categoryDao" class="com.moc.demo.CatagoryDao"/>
    ....
</beans>
2、@Component 系列注解

@Component 描述Spring框架中Bean

  • 除了@Component外,Spring提供了3个功能基本和@Component等效的注解
    @Repository 用于对DAO实现类进行标注
    @Service 用于对Service实现类进行标注
    @Controller 用于对Controller实现类进行标注
    这三个注解是为了让标注类本身的用途清晰。
//  普通类型的注解方式
@Value("小米")   // 没有set方法写在属性上,有set方法写在set方法上
private String something;

// 引用类型的注解方式
@Resource(name = "userDao")
private UserDao userDao;
3、类型注解与名称注解
  • 使用@Autowired 进行自动注入
    @Autowired 默认按照类型进行注入
    如果存在两个相同Bean类型相同,则按照名称注入
    注入时可以针对成员变量或者set方法
  • 使用 @Qualifier 指定注入Bean的名称
    使用Qualifier 指定Bean名称后,注解Bean必须指定相同名称
    这两个注解一起使用便可以实现强制按名称进行注入
  • Spring提供对JSR-250中定义 @Resource 标准注解的支持
    @Resource相当于@Autowired和@Qualifier一起使用的作用,实现强制按名称进行注解。
  • 下面两种方式是一样的
// 方式1
@Autowired
@Qualifier("userDao")
private UserDao userDao;

// 方式2
@Resource(name = "userDao")
private UserDao userDao;
4、Spring的生命周期方法注解

Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和注销bean的时候调用bean的两个生命周期方法 init-method 和 destory-method。

<bean id="xxx"class="..Moc" init-method="init" destory-method="destroy"/>

当bean被载入到容器的时候调用 init-method,可采用 @PostConstruct 注解方式实现上面的配置。

当bean从容器中删除的时候调用 destory-method(scope=singleton有效),可采用 @PreDestroy 注解方式实现上面的配置。

@Component("bean1")
public class Bean1 {

    @PostConstruct
    public void init() {
        System.out.println("InitBean ... ");
    }

    public void beanMethod() {
        System.out.println("say ...");
    }

    @PreDestroy
    public void teardown() {
        System.out.println("DestoryBean ...");
    }
}
5、Bean的作用范围注解

使用注解配置的 Bean 和 <bean> 配置的一样,默认作用范围都是singleton
@Scope 注解用于指定Bean的作用范围

@Component("bean2")
@Scope("prototype")  // 采用多例创建Bean
public class Bean2 { ... }
6、传统XML配置和注解配置混合使用
  • XML方式的优势
    结构清晰,易于阅读
  • 注解方式的优势
    开发便捷,属性注入方便
  • XML与注解的整合开发
    Bean 由XML管理, 属性注入交给注解管理
  1. 引入 context 命名空间
  2. 在配置文件中添加 context:annotation-config 标签
<beans ...
       http://www.springframework.org/schema/context/spring-context.xsd">

<context:annotation-config/>