使用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使用注解方式和解决依赖的关系
相关文章推荐
- Spring依赖注入——java项目中使用spring注解方式进行注入
- 原始方式:spring四种依赖注入方式 |注解方式:Spring零配置通过注解实现Bean依赖注入
- BasicDAO与SpringDAO区别,使用Hibernate验证,注解方式实现主键自增,注解方式注入外键(一对多)
- spring 框架中的依赖注入(IOC--设值注入)--使用注解--的具体实例的简单实现
- Spring解决在Dao层注解配置无法注入SessionFactory的办法 实现在Dao层使用注解配置
- spring 注解方式实现依赖注入
- 使用Spring注解方式注入properties文件乱码解决
- 用spring的注解建立bean与bean之间的关系组件装配及自动注入依赖对象
- Spring依赖注入方式_属性setter方法注入_构造器注入_注解注入
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- spring注解方式自动注入接口的实现子类
- Spring使用注解的方式实现AOP
- (5) Spring 如何装配 集合类 以及 【第二种 依赖注入 方式】使用 构造器 注入
- action控制层,使用spring注解方式注入业务bean报空指向错误
- spring3——注解实现Bean依赖注入
- (4) 利用 Setter方式实现 【第一种方式】 依赖注入,编码剖析Spring依赖注入的原理
- (6) Spring 如何装配 集合类 以及 【第二种 依赖注入 方式】使用 构造器 注入
- 使用Spring2.0的annotation方式进行依赖注入检查
- spring依赖注入的3种实现方式
- 使用Spring的注解方式实现AOP