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
    评论
Spring中,我们可以使用注解配置和装配Bean,这可以使我们的代码更加简洁和易于维护。下面是关于如何基于注解配置和装配Bean的一些简要介绍: 1. 基于注解配置Bean 在Spring中,我们可以使用以下注解配置Bean: - @Component:表示该类是一个Spring Bean,需要被Spring容器管理。 - @Service:表示该类是一个服务层的Bean。 - @Controller:表示该类是一个控制层的Bean。 - @Repository:表示该类是一个数据访问层的Bean。 这些注解都是基于@Component注解的衍生注解,它们的作用是更加明确地表示Bean的角色。我们可以在Bean类上添加这些注解,告诉Spring容器该类需要被管理。例如: ``` @Service public class UserService { // ... } ``` 2. 基于注解装配Bean 在Spring中,我们可以使用以下注解来装配Bean: - @Autowired:自动装配Bean。 - @Qualifier:指定具体的Bean名称进行装配。 - @Resource:指定具体的Bean名称进行装配,与@Qualifier类似。 - @Value:注入一个具体的值。 使用@Autowired注解进行自动装配时,Spring会自动在容器中寻找与该类型匹配的Bean,并将其注入到类的属性中。例如: ``` @Service public class UserService { @Autowired private UserDao userDao; // ... } ``` 使用@Qualifier或@Resource注解可以指定具体的Bean名称进行装配。例如: ``` @Service public class UserService { @Autowired @Qualifier("userDaoImpl") private UserDao userDao; // ... } ``` 使用@Value注解可以注入一个具体的值。例如: ``` @Service public class UserService { @Value("10") private int maxCount; // ... } ``` 以上就是关于Spring中基于注解配置和装配Bean的简要介绍,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值