zoukankan      html  css  js  c++  java
  • springboot-day01-引入基础

    1. 今日大纲

    1、 了解Spring的发展

    2、 掌握Springjava配置方式

    3、 学习Spring Boot

    4、 使用Spring Boot完成CRUD

    2. Spring的发展

    2.1. Spring1.x 时代

    Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

    2.2. Spring2.x时代

    随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。

    那么,在实际生产中,究竟是应该使用xml还是注解呢?

    最佳实践:

    1、 应用的基本配置用xml,比如:数据源、资源文件、服务器的链接配置等;

    2、 业务开发用注解,比如:Service中注入bean、controller中注入bean等;

    2.3. Spring3.xSpring4.x

    Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.xSpring boot都推荐使用java配置的方式。

    3. SpringJava配置方式

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

    3.1. @Configuration @Bean

    SpringJava配置方式是通过 @Configuration @Bean 这两个注解实现的:

    1@Configuration 作用于类上,相当于一个xml配置文件;

    2@Bean 作用于方法上,相当于xml配置中的<bean>

    3.2. 案例

    案例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。

    3.2.1.基于intellij idea创建web maven项目

      创建过程略,创建完成后的项目结构如下图

    3.2.2. 导入依赖

      在pom.xml中添加依赖

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4   <groupId>com.day01.springboot.demo</groupId>
     5   <artifactId>day01_springboot_demo</artifactId>
     6   <packaging>war</packaging>
     7   <version>1.0-SNAPSHOT</version>
     8   <name>day01_springboot_demo Maven Webapp</name>
     9   <url>http://maven.apache.org</url>
    10   <dependencies>
    11  <!--   引入springmvc包-->
    12     <dependency>
    13       <groupId>org.springframework</groupId>
    14       <artifactId>spring-webmvc</artifactId>
    15       <version>4.3.7.RELEASE</version>
    16     </dependency>
    17 
    18     <dependency>
    19       <groupId>junit</groupId>
    20       <artifactId>junit</artifactId>
    21       <version>3.8.1</version>
    22       <scope>test</scope>
    23     </dependency>
    24   </dependencies>
    25   <build>
    26     <finalName>day01_springboot_demo</finalName>
    27   </build>
    28 </project>

     3.2.3创建web项目结构如图

    3.2.4.在model中创建User.java对象

     1 package com.day01.springboot.demo.model;
     2 
     3 /**
     4  * Created by Administrator on 2017/12/19.
     5  */
     6 public class User {
     7     private Integer id;
     8     private String userName;
     9     private String password;
    10 
    11     public Integer getId() {
    12         return id;
    13     }
    14 
    15     public void setId(Integer id) {
    16         this.id = id;
    17     }
    18 
    19     public String getUserName() {
    20         return userName;
    21     }
    22 
    23     public void setUserName(String userName) {
    24         this.userName = userName;
    25     }
    26 
    27     public String getPassword() {
    28         return password;
    29     }
    30 
    31     public void setPassword(String password) {
    32         this.password = password;
    33     }
    34 }
    User.java

    3.2.5. 编写UserDao 用于模拟与数据库的交互

     1 package com.day01.springboot.demo.dao;
     2 
     3 import com.day01.springboot.demo.model.User;
     4 
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 
     8 /**
     9  * Created by Administrator on 2017/12/19.
    10  */
    11 public class UserDao {
    12     public List<User> queryUserList(){
    13         List<User> result = new ArrayList<User>();
    14         // 模拟数据库的查询
    15         for (int i = 0; i < 10; i++) {
    16             User user = new User();
    17             user.setId(i);
    18             user.setUserName("知识帝-"+i);
    19             user.setPassword("admin-"+i);
    20             result.add(user);
    21         }
    22         return result;
    23     }
    24 }
    UserDao.java

    3.2.6.编写UserService 用于实现User数据操作业务逻辑

     1 package com.day01.springboot.demo.service;
     2 
     3 import com.day01.springboot.demo.dao.UserDao;
     4 import com.day01.springboot.demo.model.User;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 
     8 import java.util.List;
     9 
    10 /**
    11  * Created by Administrator on 2017/12/19.
    12  */
    13 @Service
    14 public class UserService {
    15     @Autowired // 注入Spring容器中的bean对象
    16     private UserDao userDAO;
    17 
    18     public List<User> queryUserList() {
    19         // 调用userDao中的方法进行查询
    20         return userDAO.queryUserList();
    21     }
    22 }
    UserService

    3.2.7. 编写SpringConfig 用于实例化Spring容器

     1 package com.day01.springboot.demo;
     2 
     3 import com.day01.springboot.demo.dao.UserDao;
     4 import org.springframework.context.annotation.Bean;
     5 import org.springframework.context.annotation.ComponentScan;
     6 import org.springframework.context.annotation.Configuration;
     7 
     8 /**
     9  * Created by Administrator on 2017/12/19.
    10  */
    11 @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
    12 @ComponentScan(basePackages = "com.day01.springboot.demo") //配置扫描包
    13 public class SpringConfig {
    14 
    15     @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    16     public UserDao getUserDAO(){
    17         return new UserDao(); // 直接new对象做演示
    18     }
    19 }
    SpringConfig.java

    3.2.8. 编写测试方法 用于启动Spring容器

     1 package com.day01.springboot.demo;
     2 
     3 import com.day01.springboot.demo.model.User;
     4 import com.day01.springboot.demo.service.UserService;
     5 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
     6 
     7 import java.util.List;
     8 
     9 /**
    10  * Created by Administrator on 2017/12/19.
    11  */
    12 public class Main {
    13     public static void main(String[] args) {
    14         // 通过Java配置来实例化Spring容器
    15         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
    16         // 在Spring容器中获取Bean对象
    17         UserService userService = context.getBean(UserService.class);
    18         // 调用对象中的方法
    19         List<User> list = userService.queryUserList();
    20         for (User user : list) {
    21             System.out.println(user.getId()+" , "+user.getUserName() + ", " + user.getPassword() );
    22         }
    23         // 销毁该容器
    24         context.destroy();
    25     }
    26 }
    Main.java

     3.2.9.测试结果

    0 , 知识帝-0, admin-0
    1 , 知识帝-1, admin-1
    2 , 知识帝-2, admin-2
    3 , 知识帝-3, admin-3
    4 , 知识帝-4, admin-4
    5 , 知识帝-5, admin-5
    6 , 知识帝-6, admin-6
    7 , 知识帝-7, admin-7
    8 , 知识帝-8, admin-8
    9 , 知识帝-9, admin-9

    该结果表示,我们虽然没有配置任何xml文件,但也可以设置于获取bean.由此可以得出结论:

    使用Java代码就完美的替代xml配置文件,并且结构更加的清晰。

  • 相关阅读:
    SSLZYC 洛谷P2055 假期的宿舍
    SSLZYC 2601 (洛谷P1756)【24题】飞行员配对方案问题
    SSLZYC POJ 3264 平衡的阵容
    SSLZYC 2432 面积最大
    SSLZYC 2433 文件名排序
    Structure of a C program: Preprocessor directives (#include <stdlib.h>, #define)
    Basic vim Commands
    UNIX Copying Files Remotely Examples(scp/pscp)
    ssh command in Linux with Example
    UNIX Copying a File
  • 原文地址:https://www.cnblogs.com/newAndHui/p/8058527.html
Copyright © 2011-2022 走看看