初识Spring(四)
来源:互联网 发布:mac存储空间清理 编辑:程序博客网 时间:2024/06/06 05:54
spring注入和MVC
action->service->dao
以前我们需要在action中new service的对象才能调用service中的方法,对应service调用dao层中的方法也是如此,现在spring要把这个解放出来。
step1 新建entity对象
User.java
package cn.itcast.c_property;public class User { private int id; private String name; ////////////////// --> 通过容器注入属性值 public void setId(int id) { this.id = id; } // //--> 通过容器注入属性值 public void setName(String name) { this.name = name; } //////////////// public int getId() { return id; } public String getName() { return name; } @Override public String toString() { return "User [id=" + id + ", name=" + name + "]"; } public User() { super(); System.out.println("------User对象创建【无参数构造器】------"); } public User(int id, String name) { System.out.println("-----User对象创建【带参数构造器】--------"); this.id = id; this.name = name; } public void init_user() { System.out.println("创建对象之后,初始化"); } public void destroy_user() { System.out.println("IOC容器销毁,user对象回收!"); }}
UserDao.java
package cn.itcast.c_property;public class UserDao { public void save() { System.out.println("DB:保存用户"); }}
UserService.java
package cn.itcast.c_property;public class UserService { private UserDao userDao; // = new UserDao(); // IOC:对象的创建交给spring的外部容器完成 public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void save() { userDao.save(); }}
UserAction.java
package cn.itcast.c_property;public class UserAction { // Service: springIOC容器注入 private UserService userService; public void setUserService(UserService userService) { this.userService = userService; } public String execute() { userService.save(); return null; }}
step2 配置bean.xml
<?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:p="http://www.springframework.org/schema/p" 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"> <!-- ###############对象属性赋值############### --> <!-- 1) 通过构造函数 --> <bean id="user1" class="cn.itcast.c_property.User" scope="prototype"> <constructor-arg value="100"></constructor-arg> <constructor-arg value="Tom"></constructor-arg> </bean> <!-- 2) 通过set方法给属性注入值 --> <bean id="user" class="cn.itcast.c_property.User" scope="prototype"> <property name="id" value="101"></property> <property name="name" value="Jack"></property> </bean> <!-- 案例: action/service/dao --> <!-- dao instance --> <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean> <!-- service instance --> <bean id="userService" class="cn.itcast.c_property.UserService"> <property name="userDao" ref="userDao"></property> </bean> <!-- action instance --> <bean id="userAction1" class="cn.itcast.c_property.UserAction"> <property name="userService" ref="userService"></property> </bean></beans>
Test.java
首先我们测试一下使用set方法给对象赋值
@Test public void testSet() { // 从容器中获取 User user = (User) ac.getBean("user"); System.out.println(user); }
运行结果:
——User对象创建【无参数构造器】——
User [id=101, name=Jack]
第二:
package cn.itcast.c_property;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App { // 创建容器对象 private ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/c_property/bean.xml"); @Test public void testExecuteAction() { // 从容器中获取Action UserAction userAction = (UserAction) ac.getBean("userAction1"); userAction.execute(); }}
运行结果:
DB:保存用户
还有一个p空间需要spring 3.x以上才支持
0 0
- 初识Spring(四)
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- Spring 初识
- 初识Spring
- 初识spring
- 初识Spring
- 初识Spring
- Spring初识
- 初识Spring
- 初识Spring
- 初识Spring
- Spring初识
- 初识Spring
- 初识Spring
- 初识Spring
- Android 去除开机锁屏
- IIS发布中长出现的问题及解决方案
- 字符串处理函数sscanf的使用(某些程度上替代正则表达式,很强大)
- 【腾讯Bugly干货分享】JSPatch 成长之路
- mybatis1
- 初识Spring(四)
- android中使用原生WebSocket时产生的bug
- 剑指Offer Java版 双指针在链表中的应用
- 调试接口取不到POST参数的小细节
- hadoop 程序遇到的问题
- 1736: 签到二(别拦我,撞死算了)
- 给定因子求第K个数
- C/C++ 局部变量与全局变量
- Linux进程间通信--命名管道