Spring简介
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
- 目的:解决企业应用开发的复杂性
- 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
- 范围:任何Java应用Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
什么是IOC
- 把原来new对象的这种方式转换成了,spring通过反射创建对象的方式
- spring创建完的对象放到一个容器中,谁需要就给谁注入进去- (获取对象并赋值给引用)简单说就是把创建对象和管理对象的权利交给spring。
IOC环境搭建
项目依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
简单的UserDao练习
编写测试类
创建容器
public void init(){
//1:创建ioc 容器对象 暂时看成map
context=new ClassPathXmlApplicationContext("applicationContext.xml");
//2:给定配置文件的名称 applicationContext.xml
}
applicationContext.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: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">
<context:component-scan base-package="com.zy"/>
beans>
test
代替new方法,并使用log4j显示日志
public void test(){
UserService userService = (UserService) context.getBean("userService");
logger.debug(userService+"test");
UserDao userDao = (UserDao) context.getBean("userDao");
logger.debug(userDao+"test");
}
service层
@Service用于标注业务层组件
@Service
public class UserService {
private static final Logger logger = LoggerFactory.getLogger(UserService.class);
private UserDao userDao;
// 相当于 private UserDao userDao = new UserDao();
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public boolean login(User a) {
logger.debug(a+"login");
User user = userDao.findALL(a);
if(user == null){
return false;
}
else {
return true;
}
}
}
dao层
@Repository用于标注数据访问组件,即DAO组件
@Repository
public class UserDao {
public User findALL(User a) {
if ("xiaoming".equals(a.getUsername()) && "123".equals(a.getPassword())){
return a;
}else {
return null;
}
}
}
user
private String username;
private String password;
测试结果
通过上述代码可以发现Spring的IOC组件降低了代码的耦合,增强了系统可维护性和扩展性。