Изучите эти 12 сред разработки Java, чтобы легко получить 30 000+

Java

предисловие

У Java Programmemers имеют слишком много направлений, не говоря уже о разработке мобильных устройств, больших данных, блокчан, искусственный интеллект и т. Д. Большинство программистов Java являются Java Web / Back-End Development.

С какими фреймворками должен быть знаком Java-программист веб-разработки?

Сегодня Beiyou объяснит вам эти 15 общих фреймворков, которые вы должны освоить.Если вы изучите их, не говоря уже о большем, если вы не сможете получить 30К, вы разбьете мне голову!

В то же время я также собрал для вас полезную информацию, если она вам нужна, просто нажмите, чтобы получить ее.

Добро пожаловать в мою колонкуПогрузитесь в Java, эта колонка будет продолжать обновлять галантерейные товары для изучения Java, и мы с нетерпением ждем возможности расти вместе!

Ну, нечего сказать, сиди и держись, поехали!

1. Весенняя серия

Излишне говорить, что нет никаких сомнений в том, что фреймворк Spring сейчас является самым мощным в семействе серверных фреймворков Java.Он имеет два мощных инструмента, IOC и AOP, которые значительно упрощают сложность разработки программного обеспечения. Более того, теперь Spring можно интегрировать со всеми основными средами разработки, что можно назвать универсальной средой Spring упрощает разработку JAVA.

Spring Framework представляет собой многоуровневую архитектуру, состоящую из 7 четко определенных модулей. Модули Spring строятся поверх основного контейнера, который определяет, как создаются, настраиваются и управляются bean-компоненты, как показано на рисунке 1.

Каждый модуль (или компонент), из которого состоит Spring Framework, может существовать отдельно или быть реализован в сочетании с одним или несколькими другими модулями. Функции каждого модуля следующие:

основной контейнер: . . . . . . . . . . . . .

Основной контейнер обеспечивает базовую функциональность Spring Framework. Основным компонентом основного контейнера является BeanFactory, представляющий собой реализацию фабричного шаблона. BeanFactory использует шаблон Inversion of Control (IOC), чтобы отделить конфигурацию приложения и спецификацию зависимостей от фактического кода приложения.

Весенний контекст:  

Контекст Spring — это файл конфигурации, который предоставляет контекстную информацию для Spring Framework. Контекст Spring включает корпоративные службы, такие как JNDI, EJB, электронная почта, функции интернационализации, проверки и планирования.

Spring AOP: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Настроив функции управления, модуль Spring AOP непосредственно к функциям ориентированных на аспекцию программирования, встроенные в пружинную структуру. Таким образом, вы можете легко сделать какой-либо объект, управляемый поддержкой SPRING Framework AOP. Модуль Spring AOP предоставляет услуги управления транзакциями для объектов пружинных приложений. Используя Spring AOP, не полагаясь на компоненты EJB, это декларативное управление транзакцией может быть интегрировано в приложение.

Spring DAO: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

JУровень абстракции DBC DAO обеспечивает осмысленную иерархию исключений, которую можно использовать для управления обработкой исключений и сообщениями об ошибках, создаваемыми различными поставщиками баз данных. Иерархия исключений упрощает обработку ошибок и значительно сокращает объем кода исключений, который необходимо написать (например, открытие и закрытие соединений). Исключения Spring DAO, ориентированные на JDBC, следуют общей иерархии исключений DAO.

Spring ORM: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Spring Framework подключается к нескольким платформам ORM для предоставления объектно-реляционных инструментов ORM, включая JDO, Hibernate и iBatis SQL Map. Все это соответствует общей иерархии транзакций и исключений DAO Spring.

Весенний веб-модуль: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Модуль веб-контекста построен на модуле контекста приложения, который предоставляет контекст для веб-приложений. Следовательно, весенняя структура поддерживает интеграцию с jakarta Struts. Веб-модуль также упрощает работу обработки нескольких запросов и привязки параметров запроса к объекту домена.

Spring MVC-фреймворк: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Фреймворк MVC — это полнофункциональная реализация MVC для создания веб-приложений. Благодаря интерфейсу стратегии структура MVC становится гибко настраиваемой, а MVC поддерживает ряд технологий просмотра, включая JSP, Velocity, Tiles, iText и POI.

Создание контейнера spring . . . . . . . . . . . . . . . . . . .

2.1, создайте новый веб-проект spring-demo

2.2, импортировать пакет ядра Spring

2.3, под файлом в src applicationContext.xml новый пакет com.spring.demo

2.4, импортируйте JUnit, щелкните правой кнопкой мыши свойства проекта ----> путь сборки java ----> Библиотеки -----> добавить библиотеку -----> Junit4 ---> далее ---> финиш

2.5, создайте новый класс Junit Test Case,

2.6, создайте экземпляр контейнера, получите адрес файла конфигурации applicationContext, создайте объект ApplicationContext и передайте полученный адрес конфигурации, а консоль распечатает информацию о созданном контейнере.

2.7, консоль выводит информацию. Следующая информация указывает на то, что экземпляр контейнера был успешно создан.

org.springframework.context.support.ClassPathXmlApplicationContext@3c1d332b: 
startup date [Wed Nov 09 16:23:19 CST 2016]; root of context hierarchy

Используйте контейнер Spring для создания объекта javaBean    

1. Создание экземпляра с помощью конструктора . . . . . . .

<beanid="calendarObj1"class="java.util.GregorianCalendar"></bean>

1.2)существуетTestCaseперечислитьgetBeanполучить файл конфигурацииbean,Создайтеэкземпляр объекта bean**

Calendar cr = ac.getBean("calendarObj1",Calendar.class);

Увидеть, что создание экземпляра информации о консоли прошло успешно.

calendarObj1:java.util.GregorianCalendar[time=1478679801551,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=314,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=23,SECOND=21,MILLISECOND=551,ZONE_OFFSET=28800000,DST_OFFSET=0]

2. Используйте статические фабричные методы для создания экземпляров . . . . .

2.1) Добавить в файл конфигурации

<bean id="calendarObj2" class="java.util.GregorianCalendar" factory-method="getInstance"></bean>*

2.2) Добавьте метод тестирования тестового класса TestCase.

Calendar cr2 = ac.getBean("calendarObj2",Calendar.class);

       System.out.println("calendarObj2:"+cr2);

2.3** Посмотрите на консоль

calendarObj2:java.util.GregorianCalendar[time=1478679801586,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=314,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=23,SECOND=21,MILLISECOND=586,ZONE_OFFSET=28800000,DST_OFFSET=0]

создание экземпляра успешно

3. Создание экземпляра фабрики . . . . . . . . . . . . . . . . . . . . . . . .

3.1) Добавить в файл конфигурации ApplicationContext.xml

<!-- 实例工厂实例化 -->
        <bean id="calendarObj3" class="java.util.GregorianCalendar"></bean>
        <bean id="dateObj" factory-bean="calendarObj3" factory-method="getTime"></bean>

3.2) Добавьте тестовый метод в тестовый класс

Date date = ac.getBean("dateObj",Date.class);

    System.out.println("calendarObj3:"+date);

3.3 junit test, контрольный выход

calendarObj3:Wed Nov 09 16:23:21 CST 2016

создание экземпляра успешно

Контейнерное приложение IOC              

4.1) Установить впрыск

Внедрение множества может быть достигнуто путем вызова конструктора без аргументов или статического фабричного метода без аргументов для создания экземпляра компонента, а затем вызова метода set компонента.

4.1.1) Добавить в файл конфигурации

<!-- 数据源setter注入 -->
<bean id="dataSource" class="com.spring.dao.JDBCDataSource">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="">123456</property>
</bean>

4.1.2) Напишите класс JDBCDataSource, который инкапсулирует метод getConnection() для управления подключениями к базе данных. Перед выполнением этого метода требуются параметры подключения к базе данных: драйвер базы данных, URL-адрес подключения, имя пользователя и пароль. Ниже приведен код JDBCDataSource

package com.spring.dao;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCDataSource implements Serializable{
    private static final long serialVersionUID = 1L;
    private String driver;
    private String url;
    private String username;
    private String password;
    public String getDriver() {
        return driver;
    }
    public void setDriver(String driver) {
        try{
            Class.forName(driver);
            this.driver = driver;
        }catch(Exception e){
            throw new RuntimeException(e);
        }
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    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 static long getSerialversionuid() {
        return serialVersionUID;
    }
    public Connection getConnection() throws SQLException{
        Connection cn = DriverManager.getConnection(url,username,password);
        return cn;
    }
    public void close(Connection cn){
        if(cn!=null){
            try{
                cn.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
}

4.1.3) Используйте Spring для создания объекта JDBCDataSource, а затем используйте метод внедрения set для внедрения параметров базы данных в JDBCDataSource, чтобы метод getConnection() можно было вызвать обычным образом для получения подключения к базе данных.

4.1.4) Метод тестового подключения TestCase

@Test
    public void testJDBCDataSource() throws SQLException{
        String conf = "applicationContext.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
        JDBCDataSource jds = ac.getBean("dataSource",JDBCDataSource.class);
        Connection cn = jds.getConnection();
        System.out.println(cn);
    }

4.1.5) Консольный вывод

com.mysql.jdbc.JDBC4Connection@1a7244ca

Указывает, что соединение с базой данных было получено

4.2) Используйте параметры конструктора для реализации внедрения свойств зависимостей

4.2.1) Сначала создайте пользовательскую таблицу

CREATE TABLE `user` (
  `id` int(18) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `password` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
  `gender` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

4.2.2) для создания класса сущностей пользователя

package com.spring.entity;

public class User {
    private String id;
    private String name;
    private String phone;
    private String password;
    private String gender;
    
    public User(String id, String name, String phone, String password,
            String gender) {
        super();
        this.id = id;
        this.name = name;
        this.phone = phone;
        this.password = password;
        this.gender = gender;
    }
    public User() {
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", phone=" + phone
                + ", password=" + password + ", gender=" + gender + "]";
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((gender == null) ? 0 : gender.hashCode());
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result
                + ((password == null) ? 0 : password.hashCode());
        result = prime * result + ((phone == null) ? 0 : phone.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (gender == null) {
            if (other.gender != null)
                return false;
        } else if (!gender.equals(other.gender))
            return false;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (password == null) {
            if (other.password != null)
                return false;
        } else if (!password.equals(other.password))
            return false;
        if (phone == null) {
            if (other.phone != null)
                return false;
        } else if (!phone.equals(other.phone))
            return false;
        return true;
    }
    

}

4.2.3) Создайте интерфейс UserDao и напишите метод findUserByName(String name), который запрашивает пользователей по имени пользователя

package com.spring.dao;

import com.spring.entity.User;

public interface UserDao {
    public User findUserByName(String name);
}

4.2.4) Создайте MySqlUserDao для реализации UserDao,

package com.spring.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.spring.entity.User;

public class MysqlUserDao implements UserDao{
    
    private JDBCDataSource dataSource;
    
    public JDBCDataSource getDataSource() {
        return dataSource;
    }
    public void setDataSource(JDBCDataSource dataSource) {
        this.dataSource = dataSource;
    }
    
    public MysqlUserDao(JDBCDataSource dataSource) {
        super();
        this.dataSource = dataSource;
    }
    @Override
    public User findUserByName(String name) {
        // TODO Auto-generated method stub
        System.out.println("-----------查询用户信息-------------");
        String sql = "select * from user where name = ?";
        Connection con = null;
        try{
            String url = dataSource.getUrl();
            System.out.println(url);
            con = dataSource.getConnection();
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, name);
            ResultSet rs = ps.executeQuery();
            User user = null;
            while(rs.next()){
                user = new User();
                user.setId(rs.getString("id"));
                user.setName(rs.getString("name"));
                user.setGender(rs.getString("gender"));
                user.setPassword(rs.getString("password"));
                user.setPhone(rs.getString("phone"));
            }
            rs.close();
            ps.close();
            return user;
        }catch(Exception e){
            e.printStackTrace();
            throw new RuntimeException(e);
        }finally{
            dataSource.close(con);
        }
    }

}

4.2.5) Spring поддерживает использование параметров внедрения конструктора для создания экземпляров bean-компонентов.Пока параметр конструктораstructor-argдобавлен в файл конфигурации, Spring будет автоматически вызывать параметризованный конструктор для создания экземпляра объекта bean-компонента.

<bean id="userDao" class="com.spring.dao.MysqlUserDao">
            <constructor-arg index="0" ref="dataSource"></constructor-arg>
        </bean>

4.2.6) Напишите метод testFindUserByName в тестовом классе

@Test
    public void testFindUserByName(){
        String con = "applicationContext.xml";
        ApplicationContext ac = new  ClassPathXmlApplicationContext(con);
        UserDao userDao = ac.getBean("userDao",UserDao.class);
        User user = userDao.findUserByName("lisi");
        System.out.println(user);
        
    }

4.2.7) Консоль правильно выводит информацию о пользователе, указывая на то, что конструктор был успешно введен

User [id=2, name=lisi, phone=110, password=321654, gender=1]

4.2.8) Ошибка может не добавить конструктор параметров в mysqluserdao

4.3 Реализация автоматического внедрения атрибутов с помощью автосвязывания

4.3.1) Создайте класс UserLoginService и напишите метод входа в систему login(), который зависит от метода fifUserByName()

package com.spring.service;

import com.spring.dao.UserDao;
import com.spring.entity.User;

public class UserLoginService {
    private UserDao userDao;

    public UserDao getUserDao() {
        return userDao;
    }


    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public User login(String name,String password){
        try{
            User user = userDao.findUserByName(name);
            if(user.getPassword().equals(password)){
                return user;
            }
            return null;
        }catch(Exception e){
            e.printStackTrace();
            return null;
            
        }
        
    }
}

4.3.2) Существует четыре варианта атрибута autowire: по умолчанию нет, (1) .byName (2) byType, (3) конструктор, (4) автоопределение,

4.3.3) Измените файл конфигурации и добавьте конфигурацию

<!-- 自动装配 -->
         <bean id="userLoginService" class="com.spring.service.UserLoginService" autowire="byName"></bean> 

4.3.4) Напишите тестовый метод testUserLogin()

@Test
    public void testUserLogin(){
        String con = "applicationContext.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(con);
        UserLoginService us = ac.getBean("userLoginService",UserLoginService.class);
        User user = us.login("lisi", "321654");
        System.out.println(user);
    }

4.3.5) Консольный вывод

 User [id=2, name=lisi, phone=110, password=321654, gender=1]

Инструкции по автоматической сборке Успех


Из-за ограниченного места я не буду обсуждать некоторые из фреймворков, упомянутых далее, я опубликую адрес официального сайта и адрес исходного кода для всех.Друзья, которые сами в этом не разбираются, могут присоединиться к группе, чтобы получить соответствующие заметки об изучении фреймворка.

2. Мибатис/ИБатис

Когда-то iBatis был облегченной структурой уровня сохранения объектно-реляционного сопоставления (ORM), запущенной группой разработчиков программного обеспечения с открытым исходным кодом Apache.Когда команда разработчиков перешла на Google Code, ibatis 3.x был официально переименован в Mybatis, а именно: iBatis 2.x, MyBatis 3.х.

Официальный сайт:

www.mybatis.org/mybatis-3/

Исходный код:

github.com/mybatis

3. Спящий режим

Hibernate — это инфраструктура сопоставления объектных отношений с открытым исходным кодом, которая имеет очень легкий пакет объектов для JDBC, который устанавливает POJO в таблицу базы данных в полностью автоматическую инфраструктуру ORM. Hibernate автоматически генерирует операторы SQL, автоматически выполняет их, позволяя Java-программистам оперировать базами данных с объектами, которые вы хотите использовать.

Официальный сайт:

hibernate.org/

Исходный код:

github.com/hibernate

4. Даббо

Dubbo — это основанная на Java высокопроизводительная распределенная сервисная среда RPC от Alibaba с открытым исходным кодом, которая теперь стала инкубационным проектом Apache Foundation. Использование Dubbo позволяет выделить основной бизнес в качестве независимой службы и постепенно формировать стабильный сервисный центр, который можно использовать для улучшения повторного использования бизнеса и гибкого расширения, чтобы интерфейсные приложения могли быстрее реагировать на меняющиеся требования рынка.

Официальный сайт:

dubbo.apache.org

Исходный код:

GitHub.com/Apache/Inc U…

V. Netty

Netty — это асинхронная, управляемая событиями среда сетевого взаимодействия с открытым исходным кодом, предоставляемая JBOSS. Netty позволяет быстро разрабатывать высокопроизводительные и надежные сетевые серверные и клиентские программы. Netty упрощает процесс программирования и разработки сетевых приложений. невероятно легко.

Официальный сайт:

netty.io/

Исходный код:

github.com/netty/netty

6. Широ

Apache Shiro — это мощная и гибкая платформа безопасности с открытым исходным кодом, которая безошибочно обрабатывает аутентификацию, авторизацию, управление корпоративными сеансами и шифрование.

Официальный сайт:

shiro.apache.org/

Исходный код:

GitHub.com/Apache/Поэт…

7. Эхкэш

EhCache – это среда внутрипроцессного кэширования на чистом языке Java с быстрыми и экономичными функциями. Это CacheProvider по умолчанию в Hibernate. Он использует память кучи JVM. Если память превышает память, кеш можно установить на диск. Версия для предприятий может использовать физическую память вне кучи JVM.

Официальный сайт:

www.ehcache.org/

Исходный код:

GitHub.com/eh cache/Охоти…

8. Кварц

Quartz – это широко используемая платформа планирования задач с открытым исходным кодом, основанная на Java. Вы когда-нибудь использовали эту платформу перед выполнением задач на время?

Официальный сайт:

www.quartz-scheduler.org/

Исходный код:

GitHub.com/quartz — Садись в машину…

9. Скорость

Velocity — это механизм шаблонов на основе Java, простой и мощный язык шаблонов, который предоставляет службы шаблонов для различных веб-фреймворков для адаптации к модели MVC.

Официальный сайт:

velocity.apache.org/

Исходный код:

GitHub.com/Apache/VELO…

10. jQuery

jQuery — это быстрая и лаконичная среда JavaScript, которая инкапсулирует общие функциональные коды JavaScript, предоставляет простой шаблон проектирования JavaScript и значительно упрощает программирование JavaScript.

Хотя я давно не занимался веб-разработкой, я никогда не забывал об этом и до сих пор помню некоторые распространенные методы написания, такие как:

$("#wx").html("javastack");

Официальный сайт:

jquery.com/

Исходный код:

jquery.com/download/

Одиннадцать, Юнит

Junit - это структура тестирования подразделений для языка Java, большинство средов разработки Java были интегрированы как Test Test Test Build.

Официальный сайт:

junit.org

Исходный код:

github.com/junit-team/

12. Лог4дж

Log4j — это среда ведения журнала Apache с открытым исходным кодом.Через Log4j мы можем выводить информацию журнала в программе на консоль, в файл и т. д. для записи журнала. Как одна из старейших сред ведения журналов, ее текущая основная версия — Log4j2. Log4j2 — это переработанная структура ведения журналов, которая отказывается от недостатков предыдущего Log4j и поглощает дизайн превосходной среды ведения журналов Logback.

Официальный сайт:

logging.apache.org/log4j/2.x/

Исходный код:

logging.apache.org/log4/2.small/is…


Ну вот и все, что можно здесь написать, можете ли вы использовать все эти фреймворки?

Разве это не так, разве вам не нравится и вы не следуете, когда видите это?

Горячие статьи в прошлом:

end