一、Spring注入属性(有参构造和【set方法】)

注意:在Spring框架中只支持set方法、有参构造方法这两种方法。

使用有参数构造方法注入属性(用的不多,但需要知道):

实体类

 package com.tyzr.property;
public class PropertyDemo1 {
private String username;
public PropertyDemo1(String username) {
this.username = username;
}
public void test1(){
System.out.println("demo1-------------->"+username);
}
}

配置文件

 <bean id="demo1" class="com.tyzr.property.PropertyDemo1">
<!-- 使用有参数注入 name就是属性名字 -->
<constructor-arg name="username" value="小小旺旺"></constructor-arg>
</bean>

测试类

 @Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
PropertyDemo1 propertyDemo1 = (PropertyDemo1)context.getBean("demo1");
propertyDemo1.test1();
}

使用set方法注入属性(重点:这个方法用的最多):

实体类

 public class Book {
private String bookName;
public void setBookName(String bookName) {
this.bookName = bookName;
}
public void demobook(){
System.out.println("book-------->"+bookName);
}
}

配置文件

 <bean id="demo2_book" class="com.tyzr.property.Book">
<!-- 注入属性值 -->
<property name="bookName" value="Java程序设计"></property>
</bean>

测试类

 @Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
Book book = (Book)context.getBean("demo2_book");
book.demobook();
}

二、Spring注入对象类型属性(重点)

在工作中,action中要new Service,而Service中要new Dao。所以我们现在把new的过程如何实现。

  场景:

    创建Service和Dao,在Service中得到Dao对象。

  实现过程:

    1、在Service里面把dao作为类型属性

    2、生成dao类型属性的set方法

 public class UserSerivce {
//定义dao类型属性
private UserDao userDao;
//生成set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public void add(){
System.out.println("serivce-------------");
//之前的做法
//UserDao userdao = new UserDao();
//userdao.add();
//现在我们要把上面这个new的过程交给spring处理
userDao.add();
}
}

    3、注入对象属性

配置文件

 <!-- 注入对象类型属性 -->
<!-- 1 配置service和dao对象 -->
<bean id="userdao" class="com.tyzr.ioc.UserDao"></bean>
<bean id="userService" class="com.tyzr.ioc.UserSerivce">
<!--
在这里注入dao对象
name:service类里面属性的名称
现在不能写value属性,上一个例子是字符串,现在是一个对象
需要写ref:值是dao配置bean标签id的值
-->
<property name="userDao" ref="userdao"></property>
</bean>

测试类

 @Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
UserSerivce userSerivce = (UserSerivce)context.getBean("userService");
userSerivce.add();
}

三、Spring注入复杂数据

  • 数据
  • LIST
  • MAP
  • Properties类型
 public class Person {
private String pname;
private String [] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties; public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void setPname(String pname) {
this.pname = pname;
}
public void test1(){
//System.out.println("pname="+pname);
System.out.println("arrs="+arrs);
System.out.println("list="+list);
System.out.println("map="+map);
System.out.println("properties="+properties);
}
}

配置文件

 <bean id="person" class="com.tyzr.property.Person">
<!-- 数组 name:数组的对象名称 -->
<property name="arrs">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
<value>5</value>
</list>
</property>
<!-- List -->
<property name="list">
<list>
<value>111</value>
<value>222</value>
<value>333</value>
<value>444</value>
<value>555</value>
</list>
</property>
<!-- Map -->
<property name="map">
<map>
<entry key="a" value="aa"></entry>
<entry key="b" value="bb"></entry>
<entry key="c" value="cc"></entry>
<entry key="d" value="dd"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="jdbcdirver">com.mysql.jdbc.Driver</prop>
<prop key="jdbcurl">jdbc:mysql:///test</prop>
</props>
</property>
</bean>

最新文章

  1. 学习PYTHON之路, DAY 3 - PYTHON 基础 3 (函数)
  2. 手把手教你使用PS切图
  3. SQL TRACE
  4. Swift 协议
  5. T-SQL 操作练习
  6. Datatable导出Excel
  7. maven插件:tomcat插件和jetty插件的区别
  8. linq xml读取
  9. The ‘Microsoft.ACE.OLEDB.12.0′ provider is not registered on the local machine. (System.Data)
  10. Yii CDbCriteria
  11. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
  12. 浅析PC机串口通讯流控制
  13. channel c3 disabled, job failed on it will be run on another channel
  14. 在HTML中使用JavaScript需要注意的问题
  15. 使用Hamcrest增强JUnit的测试能力
  16. [UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库
  17. 关于RecyclerView嵌套导致item复用异常,界面异常的问题
  18. loadrunner整体压测执行操作步骤
  19. [转]nodejs中package.json和package-lock.json文件的功能分析
  20. jenkins配置小结

热门文章

  1. 常用插件html
  2. 【TensorFlow探索之一】MNIST的初步尝试
  3. Maven灵活构建(转载)
  4. mysql时间函数操作
  5. AI应该享有与动物一样的权利吗?
  6. Python---项目需求分析
  7. 1222/2516. Kup
  8. js-展开评论与隐藏评论
  9. C#之扩展方法 default(T)
  10. Linux培训教程 Git在linux下的使用