Spring基于注解的配置

Annotation(注解)

标注Spring Bean的Annotation

  • @Component:标注一个普通的Spring Bean类
  • @Service:标注一个控制器组件
  • @Controller:标注一个业务逻辑组件类
  • @Repository:标注一个DAO组件类

下面为@Component的注解

package annotation;

import org.springframework.stereotype.Component;

@Component
public class UserObject {

    public void getUser(){
        System.out.println("component  getUser...");
    }
}

其在XML中配置方式很简单,只需加上下面

<context:component-scan base-package="package(包路径)"></context:component-scan>

可以添加和子元素更详细的指定Annotation标注。使用时需要添加type属性和expression.

其中type可以指定下面四种过滤器

  • annotation: 需要指定一个注解名,如下org.springframework.stereotype.Repository,过滤DAO注解


@Resource配置Bean依赖

一般XML的依赖配置:

<bean id="person" class="autowire.Person" p:name="huihui" p:address-ref="address2" ></bean>

注解的依赖配置

@Component
public Class Person{
    private String name;
    private Address address;
    public void setName(String name){
        this.name = name;
    }
    @resource(name="address")
    public void setAddress(Address address){
        this.address = address;
    }
    public void toString(){...}
}

将指定容器中的Bean作为参数传入,一般setter在XML方法是必须的,但是在注解中,@Resource可以修饰Field,可以省略name属性。在使用@Resource修饰Field时,Spring会直接使用java ee的Field注入。可以不使用setter方法。
@Resource修饰setter方法,省略name属性,则name属性是setter方法去掉前面set字串,首字母小写得到的字串。

@PostConstruct,@PreDestroy定制生命周期行为
init-method(@PostConstruct)在Bean依赖关系注入完成后回调该方法,destroy-method(@PreDestroy)在销毁Bean之前回调该方法。

@Component
public class Person{
    private String name;
    private Car car;
    public void setName(String name){
        this.name = name;
    }
    @Resource
    public void setCar(Car car){
        this.car = car
    }
    @PostConstruct
    public void init(){...}
    @PreDestriy
    public void destroy(){...}
    public void toString(){...}
}

@DependsOn,@Lazy

@Depends(depends-on)用于强制初始化其他Bean,@Lazy(lazy-init)用于指定该Bean是否取消预初始化.

@Lazy(true)
@DependsOn({'car', 'address'})
@Conponent
public class Person{...}

上面代码使用@DependsOn修饰Person类,强制初始化car和address两个Bean,使用@Lazy实现懒初始化。

@Autowired

实现自动装配,标注setter方法,普通方法,Field和构造器,个人倾向显式指定依赖。
@QUALIfier根据Bean标识zhiding自动装配。

@Value

Spring提供了注解@Value,用于在程序中获取properties配置文件属性值。例如:
1. applicationContext.xml中指定配置文件。

<context:property-placeholder location="classpath:xxx.properties" 
ignore-unresolvable="true" />
  1. Spring bean中使用@Value注解获取指定参数。

    // xxx.properties配置项:
    // server.ip=192.168.1.1
    // server.port=8080

    @Value(“${server.ip}”)
    private String ip;

    @Value(“${server.port}”)
    private int port;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值