您的位置:首页 > 编程语言 > Java开发

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

2016-12-06 11:22 811 查看

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,还
4000
有引用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使用注解方式和解决依赖的关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐