什么是Spring
Spring是以 IoC和 AOP为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多 著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架其核心就是提供一种新的机制管理业务对象及其依赖关系。
Spring的好处
1.简化应用程序的开发。
2.Spring可以整合其他框架。
3.降低组件之间的耦合度,实现软件各层之间的解耦
4.容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能
5.Spring运用了ioc概念,将对象的创建与销毁交给Spring创建的bean对象容器,对象依赖也由工厂注入, 降低了程序间耦合,尽量避免编译期异常.
IOC入门案例1(基础案例)
步骤
配置类(SpringConfiguration)
UserDao类
UserDaoTest类
IOC入门注解
- 目标类上加@Component
1.1用来告知spring可以通过指定名字来创建该UserDao对象- 配置类添加@Configuration 和 @ComponentScan
1.1@Configuration 用来告知Spring该类是配置类
1.2@ComponentScan 用来告知Spring要扫描的包有哪些- 测试类通过ApplicationContext的getBean(“名字”)获取对象
- @Resource
1.1@Resource用来实现依赖注入的
IOC入门代码流程图
IOC入门案例所需要的jar包坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
IOC入门代码
创建配置类
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@ComponentScan(basePackages = {" dao"})
@Configuration
public class SpringConfiguration {
}
创建UserDao类
import org.springframework.stereotype.Component;
@Component("ud")
public class UserDao {
public void findAll(){
System.out.println("查询所有");
}
}
创建测试类
import com.comfig.SpringConfiguration;
import dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TestA {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserDao userDao = (UserDao) applicationContext.getBean("ud");// new UserDao();
userDao.findAll();
}
}
IOC入门案例2(依赖注入)
步骤
定义UserService类并添加@Component注解;
在UserService类中添加private UserDao userDao依赖;
在userDao成员上添加@Resource注解指定依赖
创建配置类
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@ComponentScan(basePackages = {"dao","service"})
@Configuration
public class SpringConfiguration {
}
创建UserService类
import dao.UserDao;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component("us")
public class UserService {
@Resource(name = "ud")
private UserDao userDao ;//= new UserDao();
public void findAllUsers(){
System.out.println("开始查找");
userDao.findAll();
System.out.println("查找结束");
}
}
创建测试类
@Test
public void test02(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService userService = (UserService) applicationContext.getBean("us");
userService.findAllUsers();
}
}
测试结果
IoC入门案例3(面向接口编程)
IoC入门案例3代码流程图
步骤
- 编写UserDao接口和实现类,并在实现类中添加@Component注解
- 编写UserService接口和实现类,并在实现类中添加@Component注解
- 在userDao成员变量中添加@Resource注解,注入dao的实现类。
- 编写配置类
- 编程测试类
dao接口和实现类
public interface UserDao {
public void findAll();
}
//告诉spring 可以通过指定名字来创建对象
@Component("UserDaoImplA")
public class UserDaoImplA implements UserDao {
public void findAll() {
System.out.println("你好Spring------>A");
}
}
service接口和实现类
public interface UserService {
public void findAllUsers();
}
@Component("UserServiceImplA")
public class UserServiceImplA implements UserService {
@Resource(name = "UserDaoImplA")
private UserDao userDao;
public void findAllUsers() {
System.out.println("A开始说:");
userDao.findAll();
System.out.println("说完了!");
}
}
配置类 不变
//告知spring 我是配置类
@Configuration
//告知spring 要扫描的包
@ComponentScan(basePackages = {"dao", "service"})
public class SpringConfiguration {
}
测试类
public class Demo01 {
public static void main(String[] args) {
ApplicationContext ap = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService userService = (UserService) ap.getBean("UserServiceImplA");
userService.findAllUsers();
}
}
测试结果
IoC入门案例4(整合JUnit4)
案例4需要导入spring-test包
修改测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class Demo02 {
@Resource(name = "UserServiceImplA")
private UserService userService;
@Test
public void aaa(){
userService.findAllUsers();
}
}