Основные операции Spring Boot

Spring Boot Java задняя часть Spring

1. Развитие весны

  

1.1 Эпоха Spring1.x

В эпоху Spring 1.x bean-компоненты настраивались через xml-файлы.В связи с постоянным расширением проекта конфигурацию xml необходимо распределять по разным файлам конфигурации, и необходимо часто переключаться между классами java и файлами конфигурации xml.

1.2.Эра Spring2.x

Благодаря поддержке аннотаций, появившейся в JDK 1.5, Spring 2.x может использовать аннотации для объявления и внедрения bean-компонентов, что значительно уменьшает файл конфигурации xml и значительно упрощает разработку проекта.

Итак, вопрос в том, должны ли мы использовать xml или аннотации?

Лучшие практики:

1. Используйте xml для базовой конфигурации приложения, такой как источники данных, файлы ресурсов и т. д.;

2. Аннотации для развития бизнеса, такие как: внедрение бинов в Сервис;

1.3. с Spring3.x на Spring4.x

Начиная с Spring3.x, был предоставлен метод конфигурации Java.Использование метода конфигурации Java позволяет лучше понять, какие компоненты вы настраиваете.Сейчас мы живем в эту эру, и как Spring4.x, так и Spring boot рекомендуют использовать метод конфигурации Java.

2. Метод конфигурации Java Spring

Конфигурация Java является рекомендуемым методом конфигурации для Spring 4.x, который может полностью заменить конфигурацию xml.

2.1 @Конфигурация и @Бин

Метод конфигурации Java Spring - через @Configuration и @Bean реализованы эти две аннотации:

1. @Configuration действует на класс, который эквивалентен файлу конфигурации xml;

2. @Bean действует на метод, эквивалентный в конфигурации xml;

2.2 Примеры

* Этот пример демонстрирует настройку Spring через конфигурацию Java и реализует функцию Spring IOC.

Создайте проект и импортируйте зависимости

<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>

Напишите объект пользователя

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 для имитации взаимодействия с базой данных

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;
    }
}

Напишите SpringConfig для создания экземпляра контейнера Spring.

@Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包
public class SpringConfig
{    @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    public UserDAO getUserDAO(){
        return new UserDAO(); // 直接new对象做演示
    }
}

Напишите тестовый метод для запуска контейнера Spring.

public class Main {
    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();    }
}

Тестовый эффект


резюме

Как видно из приведенного выше примера, использование Java-кода является прекрасной заменой конфигурационного файла xml, а структура более понятна.


3. Чтение файлов конфигурации внешних ресурсов

Вы можете указать файл конфигурации для чтения через @PropertySource и получить значение через аннотацию @Value.

@Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包
@PropertySource(value= {"classpath:jdbc.properties"})
public class SpringConfig {
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    public UserDAO getUserDAO(){
        return new UserDAO();
 // 直接new对象做演示
    }
}

думать:

1. Как настроить несколько файлов конфигурации?


2. Что делать, если сконфигурированный файл конфигурации не существует?



Настроить пул соединений с базой данных

Импорт зависимостей:

<!-- 连接池 -->
      <dependency>
         <groupId>com.jolbox</groupId>
         <artifactId>bonecp-spring</artifactId>
         <version>0.8.0.RELEASE</version>
      </dependency>

Предыдущая конфигурация Spring XML:

 <!-- 定义数据源 -->
   <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
      destroy-method="close">
      <!-- 数据库驱动 -->
      <property name="driverClass" value="${jdbc.driverClassName}" />
      <!-- 相应驱动的jdbcUrl -->
      <property name="jdbcUrl" value="${jdbc.url}" />
      <!-- 数据库的用户名 -->
      <property name="username" value="${jdbc.username}" />
      <!-- 数据库的密码 -->
      <property name="password" value="${jdbc.password}" />
      <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
      <property name="idleConnectionTestPeriod" value="60" />
      <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->
      <property name="idleMaxAge" value="30" />
      <!-- 每个分区最大的连接数 -->
      <!-- 判断依据:请求并发数-->
      <property name="maxConnectionsPerPartition" value="100" />
      <!-- 每个分区最小的连接数 -->
      <property name="minConnectionsPerPartition" value="5" />
   </bean>

Обратитесь к конфигурации xml для преобразования в метод конфигурации java:

@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;
}

4. Весна Ботинок

Что такое Spring Boot?


Весна Преимущества и недостатки загрузки


5. Весенний ботинок

Установите родителя весенней загрузки

<parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.2.RELEASE</version>
   </parent>

Примечание. Проект загрузки Spring должен установить родительский элемент Spring Boot, который содержит большое количество конфигураций по умолчанию, что значительно упрощает нашу разработку.

Импорт веб-поддержки весенней загрузки

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

Добавить загрузочный плагин Spring

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>

Напишите свое первое приложение Spring Boot

@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. @SpringBootApplication: основная аннотация проекта Spring Boot, основная цель которой — включить автоматическую настройку. ;

2. @Configuration: это класс конфигурации для настройки Spring;

3. @Controller: указывает, что это контроллер SpringMVC;

4. Основной метод: запуск приложения в основном методе, то есть: запись этого приложения;

Запустите приложение (для eclipse)

В проекте Spring Boot есть два способа запуска: один — запустить Java-приложение напрямую, а другой — запустить через плагин Spring Boot Maven.

Первый:


Секунда:


Стартовый эффект:



Если вы видите следующую информацию, запуск прошел успешно:

INFO 6188 --- [ main] c.i.springboot.demo.HelloApplication : Started HelloApplication in 3.281 seconds (JVM running for 3.601)

тестовое задание

Эффект:




Добро пожаловать, чтобы добавить, спасибо за сотрудничество! ! !