spring IOC所需的包
链接:https://pan.baidu.com/s/1a18GS_uDqX6UpdU0_3_CQw
提取码:hrku
控制反转IOC(Inversion of control)
定义:把对象的创建,初始化,销毁等工作交给spring容器来做,由spring容器来管理对象的生命周期。
public class User {
private int id;
private String name;
private List scores;
private Map info;
//.....getter和setter方法
}
在applicationContext.xml中:
110
20
如何使用呢?
public void IOCTest() {
//加载spring容器
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取实例
User user= app.getBean("user",User.class);
System.out.println(user.toString());
}
引用外部类
通过bean的scope进行配置
1.singleton:单例模式(缺省默认),spring容器中只存在一个实例
2.prototype:原型模式,每次通过spring容器获取bean时,容器会创建一个新的实例进行返回
3.request:在同一个请求中,获取的时同一个实例,不同的请求获取的是不同的实例
4.session:同一次会话中,获取的是同一个实例....
1.配置文件xml的装配方式
简单的实际应用案例:
userDao和userService没什么新东西,重点看实现类
userserviceimpl中:
package com.cbb.service.impl;
import com.cbb.dao.UserDao;
import com.cbb.dao.impl.UserDaoImpl;
import com.cbb.service.UserService;
public class UserServiceImpl implements UserService{
//private UserDao userDao = new UserDaoImpl();
private UserDao userDao;
@Override
public void login() {
// TODO Auto-generated method stub
System.err.println("service....login....");
userDao.login();
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
在userController
package com.cbb.controller;
import com.cbb.service.UserService;
import com.cbb.service.impl.UserServiceImpl;
public class UserController {
//private UserService userService = new UserServiceImpl();
private UserService userService;
public void login() {
System.err.println("controller......login.....");
userService.login();
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
重点:配置文件applicationContext.xml中
注意俩点:
2.注解的装配方式
除了已用的ioc包还需要spring-aop包
链接:https://pan.baidu.com/s/1WHP0l4flOvxQBx1lcd-VgA
提取码:5i3l
xml文件中:注意头部文件变了
代码中的注释规则:5个注释,头四个可以混用,只不过不够不规范
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import com.cbb.dao.UserDao;
//以下四个注解共同的作用:注解到springbean中的注解,要注解到 类 的头上;
//默认bean的名字为首字母小写的类名,比如本例“userDaoImpl”,自己起名字@Repository("userdao")
/*@Component //是组件的通用形式。
@Controller //控制层,表示web组件
@Service //业务逻辑层
*/
@Repository //持久层
public class UserServiceImpl implements UserService{
//private UserDao userDao = new UserDaoImpl();
@Autowired //1.按照类型进行装配 2.无需setter方法
private UserDao userDao;
@Override
public void login() {
// TODO Auto-generated method stub
System.err.println("service....login....");
userDao.login();
}
}