使用spring注解方式实现组件的声明,并且用注解注入方式解决依赖关系

10 篇文章 0 订阅
Spring2.5引入了注解方式去定义bean

@Component 描述spring框架中的bean

@Component("demo")//@Component()里面的是一个id或者是name
public class Demo{
    //内部代码
}

按照上面写的去尝试会出现错误,那是因为没有定义context在applicationContext.xml文件中。下面是配置applicationContext.xml,我使用的是spring3.2的jar.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd">
        <context:component-scan basepackage="com.springdemo.bean" />
        <!-- 上面在beans定义xmlns:context,还有引用schschema-->
        <!--在beans内定义context扫描器,package是你要扫描的包,如果有比较多的包那直接写全部包的父类-->
        </beans>        

除了上面Component,还有这几种

  • @Repository 用于对DAO实现类进行标注
  • @Service 用于对Service实现类进行标注
  • @Controller 用于对Controller实现类进行标注
  • @Name 这和Component一样,都是通用的

自动装配:

  • spring3.0以上的版本使用是@Value
  • spring2.5使用的是@Autowired和@Qualifier,@Autowired自动装配,根据你参数名去找,但是有可能出现多个同样的类包名不一样的,那就需要使用到@Qualifier去指定。
  • Spring提供对JSR-250中定义@Resource标准注解的支持
@Component("demo")
public class Demo {
    public Demo(){
        System.out.println("Demo实例化");
    }
}
//使用@Autowired和@Qualifier
@Component("demofactory")
public class DemoFactory {
    @Autowired
    @Qualifier("demo")
    private Demo demo;
    public DemoFactory(){
        System.out.println("DemoFactory实例化");
    }
    public static Demo getInstance(){
        return new Demo();
    }
}

//使用@Value
@Component("demofactory")
public class DemoFactory {
    @Value("demo")
    private Demo demo;
    public DemoFactory(){
        System.out.println("DemoFactory实例化");
    }
    public static Demo getInstance(){
        return new Demo();
    }
}
//使用@Resoure
@Component("demofactory")
public class DemoFactory {
    @Resource(name="demo")
    private Demo demo;
    public DemoFactory(){
        System.out.println("DemoFactory实例化");
    }
    public static Demo getInstance(){
        return new Demo();
    }
}

在spring2.5 版本,没有提供基本类型属性注入 ,但是spring3.0引入注解@Value

下面是使用@Value去注入

@Component("demo")
public class Demo {
    @Value("#{吊炸天}")//使用到了SPEl表达式和El表达式差不多,作用非常强大
    private String nameString;
    @Value("100")
    private int age;
    @Value("male")
    private char gender;

    public Demo(){
        System.out.println("Demo实例化");
    }
}

大概地总结了spring使用注解方式和解决依赖的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值