Spring的发展 Spring1.x时代 1 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换
Spring2.x时代 1 2 3 4 5 6 7 随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发 那么,问题来了,究竟是应该使用xml还是注解呢? 最佳实践: 1、应用的基本配置用xml,比如:数据源、资源文件等 2、业务开发用注解,比如:Service中注入bean等
Spring3.x到Spring4.x 1 从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式
Spring的Java配置方式 1 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置
@Configuration和@Bean 1 2 3 Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的 1、@Configuration 作用于类上,相当于一个xml配置文件 2、@Bean 作用于方法上,相当于xml配置中的<bean>
示例 1 该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能
创建工程
编写User对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package com.matrix.springboot.model; public class User { private String username; private String password; private Integer age; public String getUsername () { return username; } public void setUsername(String username) { this.username = username; } public String getPassword () { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge () { return age; } public void setAge(Integer age) { this.age = age; } }
编写UserDAO用于模拟与数据库交互
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package com.matrix.springboot.dao; import java.util.ArrayList; import java.util.List; import com.matrix.springboot.model.User; public class UserDAO { public List<User> queryUserList () { List<User> result = new ArrayList<User>(); // 模拟数据库的查询 for (int i = 0; i < 10; i++) { User user = new User(); user.setUsername("username_" + i); user.setPassword("password_" + i); user.setAge(i + 1); result.add(user); } return result; } }
编写UserService用于实现User数据操作业务逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package com.matrix.springboot.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.matrix.springboot.dao.UserDAO; import com.matrix.springboot.model.User; @Service public class UserService { @Autowired // 注入Spring容器中的bean对象 private UserDAO userDAO; public List<User> queryUserList () { // 调用userDAO中的方法进行查询 return this.userDAO.queryUserList(); } }
编写SpringConfig用于实例化Spring容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.matrix.springboot; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import com.matrix.springboot.dao.UserDAO; @Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件 @ComponentScan(basePackages = "com.matrix.springboot" ) // 配置扫描包 public class SpringConfig { @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean> public UserDAO getUserDAO () { return new UserDAO(); // 直接new对象做演示 } }
编写测试方法,用于启动Spring容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.matrix.springboot; import java.util.List; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.matrix.springboot.model.User; import com.matrix.springboot.service.UserService; public class Application { public static void main(String[] args) { // 通过Java配置来实例化Spring容器 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 在Spring容器中获取Bean对象 UserService userService = context.getBean(UserService.class); // 调用对象中的方法 List<User> list = userService.queryUserList(); for (User user : list) { System.out.println(user.getUsername() + ", " + user.getPassword() + ", " + user.getPassword()); } // 销毁该容器 context.destroy(); } }
测试效果
总结
1 使用Java代码就完美的替代xml配置文件,并且结构更加的清晰
Spring Boot 一句话解释Spring Boot 1 Spring Boot就是快速部署Spring项目的神器
什么是Spring Boot 1 2 3 4 5 6 7 随着动态语言的流行(Ruby、Groovy、Scala、Node.js),java的开发显得格外的笨重 繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大 因此,Spring Boot应运而生 它使用"习惯优于配置" (项目中存在大量的配置,此外还内置一个习惯性的配置,让你无需手动进行配置) 的理念让你的项目快速运行起来 使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不同或者只需要很少的Spring配置
Spring Boot的优点 1 2 3 4 5 6 快速构建项目 对主流开发框架的无配置集成 项目科独立运行,无需外部依赖Servlet容器 提供运行时的应用监控 极大地提高了开发、部署效率 与云计算的天然集成
快速使用 设置Spring Boot的parent 1 2 3 4 5 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent>
1 说明:Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发
导入Spring Boot的web支持 1 2 3 4 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
添加Spring Boot的插件 1 2 3 4 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
编写第一个Spring Boot应用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package com.matrix.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @SpringBootApplication @Configuration public class HelloApplication { @RequestMapping("hello" ) @ResponseBody public String hello (){ return "hello world!" ; } public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } }
1 2 3 4 5 代码说明: 1、@SpringBootApplication:Spring Boot项目的核心注解,主要目的是开启自动配置 2、@Configuration:这是一个配置Spring的配置类 3、@Controller:标明这是一个SpringMVC的Controller控制器 4、main方法:在main方法中启动一个应用,即:这个应用的入口
启动应用 1 在Spring Boot项目中,启动的方式有两种
第一种启动方法:直接run Java Application
第二种启动方法:通过Spring Boot的Maven插件运行