springIOC

基于注解的自动装配

一、@Autowired

该注解可对成员变量、成员方法和构造方法进行标注;若标注了成员变量,可不需要set方法。默认按类型(byType)匹配,若按名称(byName)匹配,则需要 @Qualifier注解的标注,限定其名称。@Autowired标注有一属性Required,默认为true,若Required=false,则存在实体对象时注入不存在就忽略。在启用自动注解 时必须启用自动注解驱动。

	<!-- 启用自动注解驱动 -->
	<context:annotation-config></context:annotation-config>	


	<!-- 声明UserDao对象,交给spring创建 -->
    	<bean name="uDao" class="com.lz.dao.impl.UserDaoImpl"/>
	<bean name="uDao2" class="com.lz.dao.impl.UserDaoImpl"/>
<!-- 声明UserService对象,交给spring创建 --> <bean name="uService" class="com.lz.service.impl.UserServiceImpl">

	// uDao
	@Autowired
	private UserDao uDao;
	
	// 添加用户
	public void addUserService() {
		System.out.println("用户添加service层");
		uDao.addUser();
	}

	// set get
	public void setuDao(UserDao uDao) {
		this.uDao = uDao;
	}  
	// uDao2
	@Autowired
	@Qualifier(uDao2)
private UserDao uDao;// 添加用户public void addUserService() {System.out.println("用户添加service层");uDao.addUser();}// set getpublic void setuDao(UserDao uDao) {this.uDao = uDao;}



@Resource

用于成员变量和set方法上;默认按名称(byName)匹配。解析时对应于bean的名称,类型(byType)对应于bean的类型。

	//@Autowired标注成员变量
	@Autowired
	@Qualifier("uDao2")
	private UserDao uDao;  
	//上述代码等价于@Resource
	@Resource(name=“uDao2”)
	private UserDao  uDao;

	//也可以用于set方法标注
	@Resource(name=“uDao2”)
	public void setuDao(UserDao uDao) {
  	 this.uDao= uDao;
	}

、@Value

此注入弥补了上述两种类型无法进行单值类型注入的问题,如int 、long、String、boolean、Enum等。且不用担心类型转换问题,spring自动完成。一般情况下 @Value会与properties文件联合使用,可通过占位符或SpEL的方式进行注入。

	// 直接传值的方式
	@Value("nihao")
	private String url;



	//占位符方式
	@Value("${jdbc.url}")
	private String url;
	// SpEL表达方式,其中代表XML配置中的id值
	@Value("#{jdbcMiltproperties['jdbc.name']}")
	private String name;
	
	// 占位符方式
	@Value("${jdbc2.url}")
	private String url2;
	@Value("${jdbc2.name}")
	private String name2;
	@Value("${jdbc2.password}")
	private String pw;
	
	// SpEL表达式,其中代表XML配置中的id值
	@Value("#{jdbcMiltproperties['jdbc.url']}")
	private String surl;
	@Value("#{jdbcMiltproperties['jdbc.name']}")
	private String sname;
	@Value("#{jdbcMiltproperties['jdbc.password']}")
	private String spw;

xml文件:

	<!-- properties文件配置 -->
	<!-- 基于占位符的方式 配置单个properties -->
	<!--<context:property-placeholder location="jdbc.properties"/>
	 -->
	<!-- 基于占位符的方式 配置多个properties -->
	<context:property-placeholder location="jdbc.properties,jdbc2.properties"/>
	
	<!-- 基于SpEL表达式  配置单个properties-->
	<!-- <util:properties id="jdbcconfig" location="jdbc.properties"></util:properties>
	 -->
	<!-- 基于SpEL表达式 配置多个properties -->
	<bean id="jdbcMiltproperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<property name="locations">
			<list>
				<value>jdbc.properties</value>
				<value>SpELjdbc.properties</value>
			</list>
		</property>
	</bean>	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值