Java Spring-注解进行属性注入
2017-11-06 21:19:43
一、Spring的注解装配Bean
Spring2.5 引入使用注解去定义Bean
- @Component 描述Spring框架中Bean
Spring的框架中提供了与@Component注解等效的三个注解
- @Repository 用于对DAO实现类进行标注(dao层)
- @Service 用于对Service实现类进行标注(service层)
- @Controller 用于对Controller实现类进行标注(web层)
//因为只有一个属性value,所以可以直接写。一般需要value="..."
@Component("user")
public class User {
public void sayHello(){
System.out.println("Hello World.");
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here --> <context:component-scan base-package="spring5"/> </beans>
二、注解进行属性注入
普通属性:@Value(value="..."),这时候可以不写setter方法
对象属性:@Resource(name = "....")
或者采用 @Autowired
@Qualifier(value = "plane")
//因为只有一个属性value,所以可以直接写。一般需要value="..."
@Component("user")
public class User {
@Value(value="Spring")
private String s; public void sayHello(){
System.out.println("Hello World.");
} @Override
public String toString() {
return "User{" +
"s='" + s + '\'' +
'}';
}
}
三、XML和注解的混合使用
两种方式结合:一般使用XML注册Bean,使用注解进行属性的注入
首先介绍一些其他的注解配置:
(1)配置 Bean 初始化方法和销毁方法 :
* init-method 和 destroy-method.
- @PostConstruct 初始化
- @PreDestroy 销毁
@PostConstruct
public void setup(){
System.out.println("初始化...");
}
@PreDestroy
public void teardown(){
System.out.println("销毁...");
}
(2) 配置 Bean 的作用范围 :@Scope
@Component("user")
@Scope(value="prototype")
public class User {
@Value(value="Spring")
private String s;
public void sayHello(){
System.out.println("Hello World.");
}
@Override
public String toString() {
return "User{" +
"s='" + s + '\'' +
'}';
}
}
(3)使用Java类来进行配置信息,在XML中扫描一下即可
@Configuration
public class BeanConfig {
@Bean(name = "car")
public Car showCar() {
Car car = new Car();
car.setName("长安");
car.setPrice(40000d);
return car;
} @Bean(name = "product")
public Product initProduct() {
Product product = new Product();
product.setName("空调");
product.setPrice(3000d);
return product;
}
}
混合使用范例:
public class Person {
@Autowired
@Qualifier("car")
private Car car;
@Autowired
@Qualifier(value = "plane")
private Plane plane;
@Override
public String toString() {
return "Person{" +
"car=" + car +
", plane=" + plane +
'}';
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here --> <!--使属性注入注解生效-->
<context:annotation-config/> <bean id="car" class="spring6.Car"/>
<bean id="plane" class="spring6.Plane"/> <bean id="person" class="spring6.Person">
</bean> </beans>
四、集成Junit测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-config.xml")
public class spring6 { @Autowired
@Qualifier("person")
private Person p; @Test
public void demo(){
System.out.println(p);
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean definitions here --> <!--使属性注入注解生效-->
<context:annotation-config/> <bean id="car" class="spring6.Car"/>
<bean id="plane" class="spring6.Plane"/> <bean id="person" class="spring6.Person">
</bean> </beans>
如果是注解进行的类注册,那么需要使用<context:component-scan base-package="spring5"/>来扫包,
不过一般bean的注册还是在XML文件中声明的,所以在注解方式中用的比较多的就是属性的注入操作了,这种操作只需要加上<context:annotation-config/>,就可以使属性注入的注解生效。
Java Spring-注解进行属性注入的更多相关文章
- 这篇文章,我们来谈一谈Spring中的属性注入
本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创 ...
- Spring框架的属性注入
1. 对于类成员变量,常用的注入方式有两种 * 构造函数注入(没有空的构造方法注入) * 属性setter方法注入(有空的构造方法注入) 2. 在Spring框架中提供了前两种的属性注入的方式 1. ...
- Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合
一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...
- Spring笔记②--各种属性注入
Ioc 反转控制 反转资源获取的方向 分离接口与实现 采用工厂模式 采用反转控制 Di 依赖注入 依赖容器把资源注入 配置bean 通过全类名(反射) 配置形式:基于xml方式 Ioc容器的b ...
- Spring 注解Autowired自动注入bean异常解决
错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined ...
- Spring - IoC(2): 属性注入 & 构造注入
依赖注入是指程序运行过程中,如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 I ...
- Spring中的属性注入注解
@Inject使用 JSR330规范实现的 默认按照类型注入 如果需要按照名称注入,@Inject需要和@Name一起使用 @Resource JSR250规范实现的,需要导入不同的包 @Resour ...
- 【Java Web开发学习】Spring构造器和属性注入
测试类 public class Construct { private String address; private long phone; public Construct(String nam ...
- 8、Spring+Struts2+MyBaits(Spring注解+jdbc属性文件+log4j属性文件)
一.注解理论 使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base- ...
随机推荐
- 混合开发中ios兼容问题
1. z-index无效,设置层级,发现再ios中无效,后来发现是设置了 -webkit-overflow-scrolling:touch 设置这个属性之后.层级设置失效 2.@keyup事件的问题, ...
- .Net 获取前端传递的数据
1. DotNet MVC: form是用来获得表单提交的数据:querystring是用来获得标识在URL后面的所有返回的变量及其值. 比如常见的URL网页地址都有xxx.asp?pn=123456 ...
- EasyUI DataGrid 时间格式化、字符串长度截取
需要格式化日期时间和标题的方法,显示如下: 日期:2017-03-03 时间:2017-03-0 11:11 标题:标题名称 <table id="tbList" style ...
- CodeForces 17D Notepad(同余定理)
D. Notepad time limit per test 2 seconds memory limit per test 64 megabytes input standard input out ...
- CodeForces 19B Checkout Assistant
B. Checkout Assistant time limit per test 1 second memory limit per test 256 megabytes input standar ...
- jquery ztree 刷新后记录折叠、展开状态
ztree :http://www.ztree.me/v3/main.php 项目中用到了这个插件,刚好也有需求 在页面刷新后,保存开始的展开.折叠状态, 其实 dtree: http://www.d ...
- 【转】sql server 订阅发布、快照发布(一)
原文链接:https://blog.csdn.net/tiandi_5000/article/details/11646023 SQL SERVER 2012 使用订阅发布同步数据库(一) 2013年 ...
- 002-spring cache 基于声明式注解的缓存-02-CachePut、CacheEvict、Caching、CacheConfig、EnableCaching、自定义
1.2.CachePut annotation 在支持Spring Cache的环境下,对于使用@Cacheable标注的方法,Spring在每次执行前都会检查Cache中是否存在相同key的缓存元素 ...
- (转)《SSO CAS单点系列》之 15分钟让你了解SSO技术到底是个什么鬼!
Web应用系统的演化总是从简单到复杂,从单功能到多功能模块再到多子系统方向发展. .当前的大中型Web互联网应用基本都是多系统组成的应用群,由多个web系统协同为用户提供服务. 多系统应用群,必然意味 ...
- Exhibitor(zookeeper监控工具)
具体看github上的文档,很详细https://github.com/soabase/exhibitor/wiki/Running-Exhibitor 一. 这个是Netflix出品的一个监控工具, ...