建立一個SpringBoot + springmvc + hibernateJPA + MyBatis的專案
1.使用Spring Tool Suite 建立一個Spring Starter Project工程
2.修改pom.xml檔案:
<pre class="html" name="code"><?xml version="1.0" encoding="UTF-8"?> <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>org.springframework</groupId> <artifactId>backendmanage</artifactId> <version>0.1.0</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>3.0.1</version><!--$NO-MVN-MAN-VER$--> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.10.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.1.0</version> </dependency> </dependencies> <properties> <start-class>com.sonymobile.sonyselect.music.Application</start-class> </properties> <build> <finalName>web-music</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </repository> <repository> <id>org.jboss.repository.releases</id> <name>JBoss Maven Release Repository</name> <url>https://repository.jboss.org/nexus/content/repositories/releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories> </project>
3.執行maven install, maven build
4.建立Application.java
/** * Copyright (c) 2014 Sony Mobile Communications Inc. * All rights, including trade secret rights, reserved. */ package com.sonychina.backend; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @ComponentScan @EnableAutoConfiguration @EnableJpaRepositories(basePackages = "com.sonychina.backend.repository") public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); app.run(args); //SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } }
5.配置檔案
application.properties
spring.profiles.active=dev
application-dev.properties
spring.datasource.url=jdbc:sqlserver://SEMCW14246:1433;DatabaseName=PlayNow_New spring.datasource.username=sa spring.datasource.password=hello123 spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver # spring.jpa.hibernate.ddl-auto=update spring.datasource.test-on-borrow=true spring.datasource.test-while-idle=true spring.datasource.validation-query=SELECT 1; spring.jpa.hibernate.ddl-auto=none spring.jpa.generate-ddl=true spring.jpa.properties.hibernate.show_sql=true spring.thymeleaf.cache=false
6.建立工具類
GenericsUtils.java
package com.test.backend.utility;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* 一個處理泛型繼承類的泛型引數的工具類
* @since 2015.7.14
*
*/
public class GenericsUtils {
/**
* 通過反射,獲得定義Class時宣告的父類的範型引數的型別.
* 如public BookManager extends GenricManager<Book>
*
* @param clazz The class to introspect
* @return the first generic declaration, or <code>Object.class</code> if cannot be determined
*/
public static Class<?> getActualReflectArgumentClass(Class<?> clazz) {
return getActualReflectArgumentClass(clazz, 0);
}
/**
* 通過反射,獲得定義Class時宣告的父類的範型引數的型別.
* 如public BookManager extends GenricManager<Book>
*
* @param clazz clazz The class to introspect
* @param index the Index of the generic ddeclaration,start from 0.
*/
public static Class<?> getActualReflectArgumentClass(Class<?> clazz, int index) throws IndexOutOfBoundsException {
Type genType = clazz.getGenericSuperclass();
System.out.println("--------------Generic Super class type:" + genType.toString());
if (!(genType instanceof ParameterizedType)) {
if(index == 1){
return genType.getClass();
}
return getActualReflectArgumentClass(genType.getClass(),index + 1);
}
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
return Object.class;
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class<?>) params[index];
}
}
MapResultHandler.java
package com.test.backend.utility;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
/**
* 一個處理MyBatis的sql查詢返回結果型別的handler類
* @since 2015.7.14
*
*/
public class MapResultHandler implements ResultHandler{
private final List<Map<String, Object>> mappedResults = new ArrayList<Map<String, Object>>();
private Long count = new Long(0);
@Override
public void handleResult(ResultContext context) {
try{
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) context.getResultObject();
mappedResults.add(map);
} catch(Exception e){
count = Long.valueOf(context.getResultObject().toString());
}
}
public List<Map<String, Object>> getMappedResults() {
return mappedResults;
}
public Long getCount(){
return count;
}
}
MyBatisUtil.java
package com.test.backend.utility;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
/**
* MyBatis SqlSession獲取工具類,提供SqlSession生成,是一個安全的單例類
* @since 2015.7.13
*
*/
public class MyBatisUtil {
private SqlSessionFactory sqlSessionFactory;
private static MyBatisUtil myBatisUtil;
private MyBatisUtil(DataSource dataSource){
System.out.println("--------------------------myBatis initialize-----------------------");
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
//System.out.println(this.getClass().getResource("/MyBatisMapper.xml").toURI().toString());
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/MyBatisMapper.xml"));
//System.out.println(sqlSessionFactoryBean.getObject() + ":" + dataSource);
sqlSessionFactory = sqlSessionFactoryBean.getObject();
} catch (Exception e) {
throw new RuntimeException("MyBatis SqlSessionFactory init Error:" + e.getMessage());
}
}
public static MyBatisUtil getInstance(DataSource dataSource){
synchronized (dataSource) {
if(myBatisUtil == null){
myBatisUtil = new MyBatisUtil(dataSource);
}
}
return myBatisUtil;
}
public SqlSession getSession() throws Exception{
return sqlSessionFactory.openSession();
}
}
7.配置MyBatis的mapper檔案,並建立MyBatisDao基類
MyBatisMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sonychina.statistic" >
<!-- <sql id="Base_Column_List" >id, sonyselectid</sql>
<select id="selectUserById" resultMap="com.sonychina.backend.entity.test.User" parameterType="java.lang.String" >
select <include refid="Base_Column_List" />
from t_user
where user_id = #{userId,jdbcType=CHAR}
</select> -->
<select id="getUserCount" resultType="java.lang.Long">
select count(1) from pn_userinfo
</select>
<select id="getUser" resultType="com.sonychina.backend.entity.test.User" parameterType="java.lang.Integer" >
select id, sonyselectid
from pn_userinfo
where id = #{id}
</select>
<select id="getUserMapList" resultType="java.util.HashMap">
select id, sonyselectid
from pn_userinfo
</select>
<insert id="saveUser" parameterType="com.sonychina.backend.entity.test.User" useGeneratedKeys="true"
keyProperty="id">
insert into pn_userinfo (sonyselectid) values(#{sonySelectId})
</insert>
<!--
<insert id="insertSelective" parameterType="me.gacl.domain.User" >
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="userId != null" >
user_id,
</if>
<if test="userName != null" >
user_name,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="userId != null" >
#{userId,jdbcType=CHAR},
</if>
<if test="userName != null" >
#{userName,jdbcType=VARCHAR},
</if>
</trim>
</insert>
-->
<cache eviction="LRU" flushInterval="86400000" size="256" readOnly="false"/>
</mapper>
MyBatisBaseDao
package com.test.backend.dao.base;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import com.sonychina.backend.global.Constants;
import com.sonychina.backend.utility.GenericsUtils;
import com.sonychina.backend.utility.MapResultHandler;
import com.sonychina.backend.utility.MyBatisUtil;
public class MyBatisBaseDao<T>{
private Class<T> type;
private SqlSession session;
@SuppressWarnings("unchecked")
public MyBatisBaseDao(DataSource dataSource){
type = (Class<T>) GenericsUtils.getActualReflectArgumentClass(this.getClass());
System.out.println("------------- BaseMybatisDao initialize--------------------------");
System.out.println("------------- T:" + type.toString());
try {
MyBatisUtil myBatisUtil = MyBatisUtil.getInstance(dataSource);
session = myBatisUtil.getSession();
} catch (Exception e) {
e.printStackTrace();
}
}
private String getMethodPath(String methodType){
return getMethodPath(methodType, "");
}
private String getMethodPath(String methodType, String methodSuffix){
return Constants.MYBATIS_MAPPER_PRIX + methodType + type.getSimpleName() + methodSuffix;
}
public void save(T obj) {
session.insert(getMethodPath("save"), obj);
}
public void delete(T obj) {
session.delete(getMethodPath("delete"), obj);
}
public void update(T obj) {
session.update(getMethodPath("update"), obj);
//HashMap<String,Object> map = null;
}
public T get(Integer id) {
return session.selectOne(getMethodPath("get"),id);
}
public List<T> getList(T entity){
return session.selectList(getMethodPath("get", "List"), entity);
}
public List<Map<String, Object>> getMapList(HashMap<String, Object> map){
MapResultHandler mh = new MapResultHandler();
session.select(getMethodPath("get", "MapList"), map, mh);
return mh.getMappedResults();
}
public List<Map<String, Object>> getMapList(T entity){
MapResultHandler mh = new MapResultHandler();
session.select(getMethodPath("get", "MapList"), entity, mh);
return mh.getMappedResults();
}
public Long getCount(){
MapResultHandler mh = new MapResultHandler();
session.select(getMethodPath("get", "Count"), mh);
return mh.getCount();
}
}
一個簡單的UserDaoImpl
/**
* Copyright (c) 2014 Communications Inc.
* All rights, including trade secret rights, reserved.
*/
package com.test.backend.dao.test;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sonychina.backend.dao.base.MyBatisBaseDao;
import com.sonychina.backend.entity.test.User;
@Component
public class UserDaoImpl<T extends com.sonychina.backend.entity.test.User> extends MyBatisBaseDao<User> implements UserDao {
@Autowired
public UserDaoImpl(DataSource dataSource) {
super(dataSource);
}
@Override
public User get(Integer id) {
System.out.println("-----------getUserId:" + id + "[dao start]");
User user = null;
try{
user = super.get(id);
}catch(Exception e){
e.printStackTrace();
}
return user;
}
@Override
public void save(User user) {
// TODO Auto-generated method stub
super.save(user);
}
@Override
public void delete(com.sonychina.backend.entity.test.User obj) {
// TODO Auto-generated method stub
}
public Long getCount(){
return super.getCount();
}
public List<Map<String, Object>> getMapList(){
return super.getMapList(new User());
}
}
8.使用JPA
BannerRepository.java
package com.test.backend.repository.test;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.sonychina.backend.entity.test.Banner;
public interface BannerRepository extends JpaRepository<Banner, Long> {
@Modifying
@Query("update Banner m set m.name=?1 where m.id=?2")
public void update(String bannerName, Long id);
}
BannerServiceImpl.java
package com.test.backend.service.testHibernate;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.sonychina.backend.entity.test.Banner;
import com.sonychina.backend.repository.test.BannerRepository;
@Service
public class BannerServiceImpl implements BannerService {
@Resource
private BannerRepository bannerRepository;
@Override
public void saveBanner(Banner banner) {
bannerRepository.save(banner);
}
@Override
public Banner findBannerById(Long id) {
return bannerRepository.getOne(id);
}
@Override
public void updateBanner(String bannerName, Long id) {
bannerRepository.update(bannerName, id);
}
}
9.自定義SpringMVC的攔截器,但不破壞Spring Boot的預設載入和封裝
GlobalWebConfiguration.java
package com.test.backend.global;
import java.util.List;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.Validator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.sonychina.backend.interceptor.TestUrlInterceptor;
@Configuration
public class GlobalWebConfiguration extends WebMvcConfigurerAdapter {
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void addFormatters(FormatterRegistry registry) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
}
/**
* {@inheritDoc}
* <p>This implementation returns {@code null}
*/
@Override
public Validator getValidator() {
return null;
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public MessageCodesResolver getMessageCodesResolver() {
return null;
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TestUrlInterceptor());
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
/**
* {@inheritDoc}
* <p>This implementation is empty.
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
}
}
TestUrlInterceptor.java
package com.test.backend.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class TestUrlInterceptor implements HandlerInterceptor {
public TestUrlInterceptor(){
System.out.println("--------------- TestUrlInterceptor initialize -------------");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if(request.getRequestURI().equals("/error")){
System.out.println("------------------error path");
//request.getRequestDispatcher("/invalidPage");
response.sendRedirect("/invalidPage");
}
System.out.println("--------------TestUrlInterceptor work-----------------" + request.getRequestURI());
return true;
}
/**
* This implementation is empty.
*/
@Override
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
if(modelAndView == null){
modelAndView = new ModelAndView("error");
throw new Exception("not find this path!!!!!");
}
System.out.println("-------------- TestUrlInterceptor post url -----------------" + modelAndView.getViewName());
}
/**
* This implementation is empty.
*/
@Override
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if(ex != null){
System.out.println("-------------- TestUrlInterceptor completion -----------------" + ex.getMessage());
}
}
}
ok,到此打住,以上內容僅供參考。
相關推薦
建立一個SpringBoot + springmvc + hibernateJPA + MyBatis的專案
1.使用Spring Tool Suite 建立一個Spring Starter Project工程 2.修改pom.xml檔案: <pre class="html" name="code"><?xml version="1.0" encoding="U
idea工具的使用2(以建立一個SpringBoot+MyBatis專案舉例)
點選next,出現下圖:選擇你這個專案所需的模組依賴,我要建立的這個專案這裡需要Web中的Web模組的依賴;還需要SQL中的MySQL和MyBaties的依賴。點選next之後,出現下圖:一般來說,下圖中的專案名Project name和專案存放路徑Project location都是會根據
【SpringBoot】手把手使用IDEA快速建立一個SpringBoot專案
微信公眾號: 關注可獲得更多幹貨。問題或建議,請公眾號留言; 關注小編微信公眾號獲取更多資源 手把手使用IDEA快速建立一個SpringBoot專案 目錄 1.New Project
初學springboot、springMVC、Mybatis專案--學習筆記
1.建立sts專案 建立步驟連結:https://blog.csdn.net/he90227/article/details/53308222 (我在建立專案時,選擇了mysql,但是初始測試時,未配置資料庫連結,專案啟動報錯:Failed to configu
SpringBoot教程(一)建立一個SpringBoot專案
構建簡單的專案 通常微服務都是由一組專案構建而成的一套服務架構,所以為了確保版本的一致性,通常都會用一個父工程來管理jar依賴版本,首先我們建立一個pom作為父工程 構建工程 在父工程下引入springboot依賴包 <parent> <
使用 IntelliJ IDEA 建立一個SpringBoot專案
1. 開啟idea,點選建立新專案,選擇Spring Initializr 2. 點選next,填寫Group和Artifact 3. 選擇Web,再選擇Web複選框 4. 填寫Project name,點選finish 5. 開啟專案目錄,刪除以下資
idea建立一個springboot專案demo詳細教程
1:在idea工作空間new一個module 2:設定自帶的tomcat的埠號,不設定的話預設8080 3:專案的分層需要建立到跟啟動類同級目錄下如圖 4:
快速建立一個springboot專案
本文主要介紹使用spring官方網站快速生成springboot腳手架 1.開啟網站 https://start.spring.io 2.填寫專案資訊以及maven依賴(新增web,devtools依賴即可) 3.解壓生成的zip檔案,然後在id
idea中建立一個spring springMVC miniui框架的Java web專案的經過
最近學習miniui,發現網上可查的資料太少,基本只有官方api文件,在此,記錄下最近學習的部分內容。一、安裝部署專案。 本人是在idea中進行部署的,但在此之前,具體是將網上官方的示例下載下來,匯入MyEclipse文件中首次進行學習,但是第一次將專案按照“現在已經存
第一個springboot+jpa+oracle+maven專案
大概花了一週的時間完成了第一個springboot專案的搭建,使用的工具是Eclipse,遇到不少問題,這裡強烈推薦《Spring實戰》這本書,有些問題在網上搜了半天但是都不能解決問題,後來都是在這本書中找到解決方法的。 專案結構: pom.xml檔案 <
## **如何建立一個最簡單的struts2專案
1.建立web專案並匯入struts2相關jar *jar包可以去官網下載 2. web.xml中配置struts2的核心過濾器 核心過濾器:StrutsPrepareAndExecuteFilter 配置核心過濾器: 3.建立action類 4.在str
一.寫一個最基本的mybatis專案,往資料庫中儲存資訊
1. 匯入相關的包,其中mybatis-3.2.7.jar和junit-4.9.jar分別是框架包和測試包,其餘的包都是mybatis包依賴的包 2. 建立資料庫,建立表 3. 建立實體類 4.定
springMVC整合mybatis 專案遇到問題總結
1、在spring裡面做 AOP 的時候,切點的寫法上,*號後面要有個空格,如下語句<!-- 配置 AOP --> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execut
MVC學習筆記(一) 建立一個屬於自己的MVC專案
學習MVC兩個來月了,終於決定最個能讓自己滿意的MVC.於是,在cnblog的洞庭夕照大大的MVC5網站開發實踐的幫助下,開始了MVC之路 再次感謝洞庭夕照大大,框架就直接按洞庭夕照大大的來了.. 專案名字就叫FantasyCMS好了.取自FINAL FANTASY遊戲
Dubbo學習筆記(一)—— 建立一個簡單的Dubbo入門專案演示HelloWorld
一、Dubbo簡介1、dubbo是什麼?▶ 一個分散式服務框架▶ 一個RPC遠端服務呼叫方案▶ 一個SOA服務治理方案2、dubbo架構圖3、節點說明Provider:暴露服務的服務提供方Consumer:呼叫遠端服務的服務消費方Registry:發現並註冊服務的服務註冊中心
SpringBoot2.x入門:快速建立一個SpringBoot應用
## 前提 這篇文章是《SpringBoot2.x入門》專輯的**第2篇**文章,使用的`SpringBoot`版本為`2.3.1.RELEASE`,`JDK`版本為`1.8`。 常規的套路會建議使用`Spring`官方提供的工具[Spring Initializr](https://start.spri
建立一個簡單的springMVC+mybatis專案(一)
這裡我們只是簡單介紹搭建一個springMVC+mybatis專案的基本操作,不做過多的理論介紹 首先,建立一個專案,引入相應的java包 點選next,直到一下頁面,勾選建立通用的web.xml後點擊finish完成專案建立 匯入springMVC web專案的相關jar包
使用Gradle管理專案建立第一個springboot專案
xl_echo編輯整理,歡迎轉載,轉載請宣告文章來源。更多IT、程式設計案例、資料請聯絡QQ:1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 使用gradle管理專案和maven管理專案最大的區別在於它的依賴配置,如果不熟
Spring Boot (基礎篇):建立一個簡單的SpringBoot專案
Spring Boot建立 首先IDEA新建一個專案,File-New-Project-Spring Initializr,然後Next,如下圖: 填寫專案資訊: 填寫專案使用到的技術,上面的SpringBoot版本建議選擇最新的穩定版,下面勾選上Web就可