查看“SpringBoot:快速入门”的源代码
←
SpringBoot:快速入门
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:SpringBoot]] == Spring的发展 == # Spring1.x: #: 通过'''xml文件'''配置bean:随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。 # Spring2.x: #:(JDK 1.5 注解支持)使用'''注解'''对Bean进行申明和注入:大大的减少了xml配置文件,同时也大大简化了项目的开发。 ## 应用的基本配置用xml(如:数据源、资源文件等); ## 业务开发用注解(如:Service中注入bean等); # Spring3.x(Spring4.x): #: 推荐使用'''Java配置'''方式:可以完全替代xml配置。 === Spring的Java配置方式 === (Java配置是Spring4.x推荐的配置方式)<br/> Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的: # '''@Configuration''':标记类,相当于一个xml配置文件; # '''@Bean''':标记方法,相当于xml配置中的“<bean>”; 其他配置类注解: # 读取外部的资源配置文件: ## '''@PropertySource''':指定读取的配置文件; ## '''@Value''':获取配置文件的配置项; 示例:配置数据库连接池: ::<syntaxhighlight lang="java"> // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件 @Configuration // 配置扫描包,相当于xml中的"<context:component-scan ...>" @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //加载配置文件 @PropertySource(value = { "classpath:jdbc.properties", "xxx.properties" }, ignoreResourceNotFound = true) public class SpringConfig { @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean> //1、相当于xml中的<bean>标签 //2、相当于类中的@Service类的注解 //所以"UserDAO"可以用于"UserService"属性注入 public UserDAO getUserDAO() { return new UserDAO(); // 直接new对象做演示 } //返回值,相当于<bean>中的"class"属性 //方法名称,相当于<bean>中的"id"属性? // 获取配置文件的配置项 @Value("${jdbc.url}") private String jdbcUrl; @Value("${jdbc.driverClassName}") private String jdbcDriverClassName; @Value("${jdbc.username}") private String jdbcUsername; @Value("${jdbc.password}") private String jdbcPassword; @Bean(destroyMethod = "close") public DataSource dataSource() { BoneCPDataSource boneCPDataSource = new BoneCPDataSource(); // 数据库驱动 boneCPDataSource.setDriverClass(jdbcDriverClassName); // 相应驱动的jdbcUrl boneCPDataSource.setJdbcUrl(jdbcUrl); // 数据库的用户名 boneCPDataSource.setUsername(jdbcUsername); // 数据库的密码 boneCPDataSource.setPassword(jdbcUsername); // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60); // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 boneCPDataSource.setIdleMaxAgeInMinutes(30); // 每个分区最大的连接数 boneCPDataSource.setMaxConnectionsPerPartition(100); // 每个分区最小的连接数 boneCPDataSource.setMinConnectionsPerPartition(5); return boneCPDataSource; } } </syntaxhighlight> === 实例 === # 创建工程以及导入依赖: #: <syntaxhighlight lang="properties"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.itcast.springboot</groupId> <artifactId>itcast-springboot</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.jolbox</groupId> <artifactId>bonecp-spring</artifactId> <version>0.8.0.RELEASE</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </pluginManagement> </build> </project> </syntaxhighlight> # 编写User对象: #: <syntaxhighlight lang="java"> public class User { private String username; private String password; private Integer age; // getter & setter & toString } </syntaxhighlight> # 编写UserDao接口: #: <syntaxhighlight lang="java"> public interface UserDaoUserDao { //根据id查询用户信息 public User findUserById(int id) throws Exception; } </syntaxhighlight> # 编写UserDaoImpl接口:(mybatis) #: <syntaxhighlight lang="java"> public class UserDaoImpl implements UserDao { // 需要向dao实现类中注入SqlSessionFactory // 这里通过构造方法注入 private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } @Override public User findUserById(int id) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", id); // 释放资源 sqlSession.close(); return user; } } </syntaxhighlight> # 编写UserService实现User数据操作业务逻辑: #: <syntaxhighlight lang="java"> @Service public class UserService { @Autowired // 注入Spring容器中的bean对象 private UserDaoImpl UserDaoImpl; public User findUserById(int id) throws Exception { // 调用userDAO中的方法进行查询 return this.UserDaoImpl.findUserById(id); } } </syntaxhighlight> # 编写SpringConfig用于'''实例化Spring容器''': #: <syntaxhighlight lang="java" highlight="1-2,5"> @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件 @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包 public class SpringConfig { @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean> public UserDao getUserDao(){ return new UserDao(); // 直接new对象做演示 } } </syntaxhighlight> # 编写测试方法,'''启动Spring容器''': #: <syntaxhighlight lang="java"> public class Main { public static void main(String[] args) { // 通过Java配置来实例化Spring容器 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 对比使用:使用xml方式的“加载spring配置文件” ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); // 对比使用:使用xml方式的“根据配置创建对象” UserService userService = (UserService) context.getBean("userService"); // 在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(); } } </syntaxhighlight> === 实例化Spring容器:xml与Java配置 === 对比,“xml、注解”于“Java配置类”的实例化Spring容器: <syntaxhighlight lang="java"> // 通过Java配置来实例化Spring容器 // 1、Java配置类 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 2、xml、注解 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 在Spring容器中“获取Bean对象” // 1、Java配置类 UserService userService = context.getBean(UserService.class); // 2、xml、注解 UserService userService = (UserService) context.getBean("userService"); </syntaxhighlight> == Spring Boot == “习惯优于配置”:<br/> SpringBoot是一种全新的框架,目的是为了简化Spring应用的初始搭建以及开发过程。该框架使用特定的方式(集成starter,约定优于配置)来进行配置,从而使开发人员不需要再定义样板化的配置。 * SpringBoot基于Sring4进行设计,继承了原有Spring框架的优秀基因。 * SpringBoot并不是一个框架,而是一些类库的集合。 * maven或者gradle项目导入相应依赖即可使用SpringBoot,而无需自行管理这些类库的版本。 优点: # 快速创建基于Spring的应用程序。 # 无需手动管理依赖包的版本。 # 自动配置,无需XML。 # 嵌入式的Tomcat,无需部署war文件。 === 快速入门 === ==== 设置spring boot的parent ==== <syntaxhighlight lang="properties"> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> </syntaxhighlight> Spring boot的项目必须要将parent设置为spring boot的parent,该parent包含了大量默认的配置,大大简化了我们的开发。 ==== 导入spring boot的web支持 ==== <syntaxhighlight lang="properties"> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </syntaxhighlight> ==== 添加Spring boot的插件 ==== <syntaxhighlight lang="properties"> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <pluginManagement> ... </pluginManagement> </build> </syntaxhighlight> ==== 编写第一个Spring Boot的应用 ==== <syntaxhighlight lang="java"> @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); } } </syntaxhighlight> # '''@SpringBootApplication''':Spring Boot项目的核心注解,主要目的是开启自动配置; # '''@Configuration''':这是一个配置Spring的配置类; # '''@Controller''':标明这是一个SpringMVC的Controller控制器; # main方法:在main方法中启动一个应用,即:这个应用的入口; ==== 启动应用 ==== 在Spring Boot项目中,启动的方式有两种,一种是另外一种是。 # 直接run Java Application #: [[File:SpringBoot启动应用:RunAS ”Java Aplication“.png|600px]] # 通过Spring Boot的Maven插件运行 #: [[File:SpringBoot启动应用:Maven插件运行.png|600px]] == SpringBoot核心 == == 自动配置的原理 ==
返回至“
SpringBoot:快速入门
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息