[3]Spring以配置文件的方式进行属性注入
来源:互联网 发布:数据挖掘是什么 编辑:程序博客网 时间:2024/05/19 14:17
在Java中进行属性注入的三种方式(也就是给属性赋值的几种方式)
1.使用set方法注入属性
public class User{ private String name; public void setName(String name){ this.name = name; } } User user = new User(); user.setName("wangke");
2.有参构造注入属性
public class User{ private String name; public User(String name){ this.name = name; }}User user = new User("wangke")
3.使用接口的方式进行属性的注入
public interface UserDao{ void setName(String name); } public class UserImpl UserDao implement UserDao{ private String name; void setName(Strin name){ this.name = name; } }UserImpl user = new UserImpl();user.setName("wangke");
但是在spring框架中只支持前两种的属性注入的方式:
1. set方法注入(使用比较多)
2.带参的构造方法的注入
1. 使用有参数构造的注入:
User.java(需要进行装配的User类)
/** * Created by wangke on 17-6-22. */public class User { private String userName; private String age; public User(String userName,int age) { this.userName = userName; this.age = age; } public void print(){ System.out.println("userName==>"+userName+"age==>"+age); }}
applicationContext.xml(spring配置文件)
<bean id="user" class="com.merpyzf.study01.User"><constructor-arg name="userName" value="wangke"></constructor-arg><constructor-arg name="age" value="20"></constructor-arg></bean>
当类的构造方法有多个参数时,我们可以通过在 constructor-arg 标签中指定要进行注入值的属性的 name 来确定 value 的对应关系。
也可以使用index属性来指定值所要注入的属性的位置,此时可以省略name属性
如下示例:
<constructor-arg value="wangke" index="0"></constructor-arg><constructor-arg value="20" index="1"></constructor-arg>
myTest.java(测试代码)
@Testpublic void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = (User) context.getBean("user"); user.print();}
运行效果:
2. 使用Set的方式进行属性的注入
User.java(需要进行属性注入的对象)
/** * Created by wangke on 17-6-22. */public class User { private String userName; private int age; public void setUserName(String userName) { this.userName = userName; } public void setAge(int age) { this.age = age; } public void print(){ System.out.println("userName==>"+userName+"age==>"+age); }}
使用set方式进行对属性进行输入时,需要注入的属性必须要有setter方法
applicationContext.xml(spring配置文件)
<bean id="user" class="com.merpyzf.study01.User"> <!--name 属性值 : 对应类里面定义的属性名称 value : 需要给属性设置的值--> <property name="age" value="20"></property> <property name="userName" value="wangke"></property> </bean>
当进行set方式进行属性注入的时候需要使用 property 属性来完成注入
myTest.java(测试代码)
@Testpublic void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = (User) context.getBean("user"); user.print();}
运行效果:
3. 注入复杂的数据类型(list、array、map)
这里注入复杂数据类型使用set的方式进行
User.java(需要进行属性注入的类)
public class User { private String userName; private List<String> books; private String []girlFriends; private Map<String,String> mMap; public void setUserName(String userName) { this.userName = userName; } public void setBooks(List<String> books) { this.books = books; } public void setGirlFriends(String[] girlFriends) { this.girlFriends = girlFriends; } public void setmMap(Map<String, String> mMap) { this.mMap = mMap; } @Override public String toString() { return "User{" + "userName='" + userName + '\'' + ", books=" + books + ", girlFriends=" + Arrays.toString(girlFriends) + ", mMap=" + mMap + '}'; }}
applicationContext.xml(spring配置文件)
<bean id="user" class="com.merpyzf.study01.User"> <property name="userName" value="wangke"></property> <property name="books" > <!--配置list--> <array> <value type="java.lang.String"> 冰与火之歌 </value> <value type="java.lang.String"> 活着 </value> <value type="java.lang.String"> 一句顶一万句 </value> </array> </property> <property name="girlFriends"> <!--配置数组--> <array> <value>小莉</value> <value>凤姐</value> </array> </property> <property name="mMap"> <!--配置map集合--> <map> <entry key="aa -key" value="bb -value"></entry> <entry key="dd -key" value="ee - value"></entry> </map> </property> </bean>
MyTest.java(测试代码)
@Test public void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = (User) context.getBean("user"); System.out.println(user); }
运行效果:
4. 使用set方式给属性注入对象类型
在开发中我们经常会遇到在一个类中持有另外一个类的引用,下面来看一下如何让使用set的方法来给属性注入对象类型。
UserService.java(UserService类中持有UserDao对象)
/** * Created by wangke on 17-6-22. */public class UserService { private UserDao mUserDao; //在配置文件中通过set方式给mUserDao属性注入对象类型属性 public void setmUserDao(UserDao mUserDao) { this.mUserDao = mUserDao; } public void print(){ //调用UserDao中的方法 mUserDao.printInfo(); }}
UserDao.java
/** * Created by wangke on 17-6-22. */public class UserDao { //只有一个方法用来测试对象创建是否成功 public void printInfo() { System.out.println("UserDao ^-^"); }}
applicationCOntext.xml(spring配置文件)
<!--首先创建UserDao对象--><bean id="userDao" class="com.merpyzf.study01.UserDao"></bean><bean id="userService" class="com.merpyzf.study01.UserService"> <!--通过ref属性注入对象类型 ref中的内容为对象的id值--> <property name="mUserDao" ref="userDao"></property></bean>
运行结果:
阅读全文
0 0
- [3]Spring以配置文件的方式进行属性注入
- [4]Spring以注解的方式进行Bean的实例化和属性注入
- spring中属性文件和配置文件的注入方式
- Spring属性注入的方式
- spring mvc注入配置文件里的属性
- spring mvc注入配置文件里的属性
- spring mvc注入配置文件里的属性
- 关于spring的配置文件的注入方式
- Spring依赖注入(基于XML配置文件和Annotation的方式完成属性装配)
- Spring属性注入方式
- Spring属性注入的两种方式
- Spring:属性注入的方式有三种
- Spring中属性注入的方式
- Spring三种注入属性的方式
- Spring属性注入的两种方式
- spring的配置文件中bean的注入方式
- spring的配置文件中bean的注入方式
- Spring学习,Bean配置文件注入的几种方式
- LSMW批处理使用方法(03)_步骤2
- 文章标题
- jQuery AJAX get() 和 post() 方法示例讲解
- 用react实现对表格增删操作
- 权值并查集——bzoj1202狡猾的商人
- [3]Spring以配置文件的方式进行属性注入
- angular2升级angular4
- 深度学习的硬件方案
- poj ACM1031
- react-native 实现上传功能
- jedis存储对象(序列化)开发
- 【玩儿法】真不是装X 为了不加班我一直用这些小众软件
- servlet
- 使用udev方式挂载的asm查看对应的物理盘scsi_id