国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于SpringBoot的后臺管理系統(啟動類解析,開源的世界真好)(一)

SwordFly / 962人閱讀

摘要:目前只是一個后臺模塊,希望自己技能增強到一定時,可以把的融合進來。目錄第一站,分析了啟動類。看見沒,這個也是配置類,它聲明了視圖解析器地域解析器以及靜態資源的位置,想起來沒,就是前置,后置。程序啟動類我們點擊源碼看看。

Guns基于SpringBoot,致力于做更簡潔的后臺管理系統,完美整合springmvc + shiro + 分頁插件PageHelper + 通用Mapper + beetl!Guns項目代碼簡潔,注釋豐富,上手容易,同時Guns包含許多基礎模塊(用戶管理,角色管理,部門管理,字典管理等10個模塊),可以直接作為一個后臺管理系統的腳手架.

說明

如果您有幸能看到,請認閱讀以下內容;

1、本項目臨摹自abel533的Guns,他的項目 fork 自 stylefeng 的 Guns!開源的世界真好,可以學到很多知識。

2、版權歸原作者所有,自己只是學習使用。跟著大佬的思路,希望自己也能變成大佬。gogogo》。。

3、目前只是一個后臺模塊,希望自己技能增強到一定時,可以把stylefeng 的 [Guns]融合進來。

4、很多總結的文檔都來自abel533的GiHub的README.md.為了方便自己復習就拿來主義了。

5、note里面是自己的學習過程,菜鳥寫的,不是大佬寫的。內容都是大佬的。

目錄

1、SpringBoot第一站,分析了啟動類。還有各種自動配置的源碼點這里

2、

修改說明

本項目對 Guns 的改動為:

1、將 mybatis-plus 改成了通用 Mapper.

2、增加分頁插件 PageHelper.

3、去掉com.stylefeng.guns.modular.system.dao包中的所有DAO,將方法放到對應的Mapper接口中.

4、將 Mapper.xml 移動到 resources 中

關于兩者的對比,可以通過 commit 信息查看。

功能簡介

1、用戶管理

2、角色管理

3、部門管理

4、菜單管理

5、字典管理

6、業務日志

7、登錄日志

8、監控管理

9、通知管理

10、代碼生成

1、首先我們來看包結構,老樣子,我們先從core包開始,然后common,在config。等等,還是先從啟動類開始吧。

項目包結構說明
├─main
│  │
│  ├─java
│  │   │
│  │   ├─com.guo.guns----------------項目主代碼(原來的包:com.stylefeng.guns)
│  │   │          │
│  │   │          ├─common----------------項目公用的部分(業務中經常調用的類,例如常量,異常,實體,注解,分頁類,節點類)
│  │   │          │
│  │   │          ├─config----------------項目配置代碼(例如mybtais-plus配置,ehcache配置等)
│  │   │          │
│  │   │          ├─core----------------項目運行的核心依靠(例如aop日志記錄,攔截器,監聽器,guns模板引擎,shiro權限檢查等)
│  │   │          │
│  │   │          ├─modular----------------項目業務代碼
│  │   │          │
│  │   │          ├─GunsApplication類----------------以main方法啟動springboot的類
│  │   │          │
│  │   │          └─GunsServletInitializer類----------------用servlet容器啟動springboot的核心類
│  │   │
│  │   └─generator----------------mybatis-plus Entity生成器
│  │
│  ├─resources----------------項目資源文件
│  │     │
│  │     ├─gunsTemplate----------------guns代碼生成模板
│  │     │
│  │     ├─application.yml----------------springboot項目配置
│  │     │
│  │     └─ehcache.xml----------------ehcache緩存配置
│  │
│  └─webapp----------------web頁面和靜態資源存放的目錄
│

注:SpringBoot項目默認不支持將靜態資源和模板(web頁面)放到webapp目錄,但是個人感覺resources目錄只放項目的配置更加簡潔,所以就將web頁面繼續放到webapp目錄了.

1、先來看啟動類:

/**
 * SpringBoot方式啟動類
 */
@SpringBootApplication
public class GunsApplication extends WebMvcConfigurerAdapter {

    protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(GunsApplication.class,args);
        logger.info("GunsApplication is success!");
    }
}

需要注意兩個點:@SpringBootApplication注解和WebMvcConfigurerAdapter

(1)、1.2版本應該是@Configuretion注解,這個注解表明這個類會處理Spring的常規bean。來自《精通Spring MVC》

(2)、@ComponentScana 它會告訴Spring去哪里查找SPring組件(服務,控制器),大白話就是bean那。一般我們在控制層的類上會加上@Controller注解,不知道大家有木有配置過XML,難受啊。

(3)、@EnableAutoConfiguration : 看名字,AutoConfiguration啊,這就是Spring魔力所在,省去很多XXML了,在這里是基于JavaConfig配置的。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    Class[] scanBasePackageClasses() default {};
}
-------------------------------------------------------
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

2、接下來,我們再看下為毛要繼承WebMvcConfigrerApapter類。

看見Config沒,這個也是配置類,它聲明了視圖解析器、地域解析器、以及靜態資源的位置,(想起來沒,就是前置,后置)

先看一段源碼 ————源碼是個好東西


----------------------InternalResourceViewResolver熟悉嗎?-----------------------
@Bean
@ConditionalOnMissingBean
public InternalResourceViewResolver defaultViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix(this.mvcProperties.getView().getPrefix());
    resolver.setSuffix(this.mvcProperties.getView().getSuffix());
    return resolver;
}
---------------------------也是視圖解析器,只是返回的是bean-------------------------
@Bean
@ConditionalOnBean({View.class})
@ConditionalOnMissingBean
public BeanNameViewResolver beanNameViewResolver() {
    BeanNameViewResolver resolver = new BeanNameViewResolver();
    resolver.setOrder(2147483637);
    return resolver;
}
-------------------------------地域解析器--------------------------------------------
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(
    prefix = "spring.mvc",
    name = {"locale"}
)
public LocaleResolver localeResolver() {
    if(this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebMvcProperties.LocaleResolver.FIXED) {
        return new FixedLocaleResolver(this.mvcProperties.getLocale());
    } else {
        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
        localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
        return localeResolver;
    }
}

說了這么多,我們先來看看SpringMVC啟動流程,知其所以然的同時也要知其然。

一般來說,初始化 步驟如下:

1、初始化SpringMVC的DispatcherServlet

2、配置轉碼過濾器(UTF-8,亂碼鍋就在設置,還有一個就是在發送信息前,setCharacterEncoding()。),保證能正確轉碼,為啥啊,因為瀏覽器發送的是ISO-8859?。

3、配置視圖解析器,就上面說的那個,返回視圖的時候方便定位。

4、配置靜態資源的位置,

5、還有就是配置multipart解析器,主要是為了能上傳文件,part單詞什么意思?多個-部分

6、還需要寫錯誤頁面,統一異常處理。

然而,然而有了SpringBoot,統統可以省略,激動嗎?興奮嗎? 我是蠻激動的,尤其第一次運行SpringBoot項目。

上面已經幫我們位置了視圖解析器,接下來我們看下DispatcherServlet和multipart

@AutoConfigureOrder(-2147483648)
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({DispatcherServlet.class})     //只有對應的類在classpath中有存在時才會注入
@AutoConfigureAfter({EmbeddedServletContainerAutoConfiguration.class})
public class DispatcherServletAutoConfiguration {
    public static final String DEFAULT_DISPATCHER_SERVLET_BEAN_NAME = "dispatcherServlet";    //熟悉嗎?DeFAULT,默認的那。
    public static final String DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME = "dispatcherServletRegistration";

    public DispatcherServletAutoConfiguration() {
    }
-------------------------------MultipartResolver-------------------------------
    @Bean
    @ConditionalOnBean({MultipartResolver.class})
    @ConditionalOnMissingBean(
        name = {"multipartResolver"}
    )
    public MultipartResolver multipartResolver(MultipartResolver resolver) {
        return resolver;
    }
}

還有還有,錯誤配置、轉碼配置、tomcat配置Jetty等等。具體的在這個配置類中EmbeddedServletContainerAutoConfiguration,只看ContainerAutofig。我們還是正式進入項目吧。

/**
 * Guns Web程序啟動類
 */
public class GunsServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(GunsApplication.class);
    }
}

我們點擊源碼看看SpringBootServletInitializer。其實看名字就可看出是Servlet初始化,熟悉設這個ApplicationContext單詞嗎?應用上下文。很重要的,還有一個叫做BeanFactory,主要有個getBean方法,一般用前者。不懂的可以去看看我臨摹別人的簡單版Spring框架點這里

public abstract class SpringBootServletInitializer implements WebApplicationInitializer {

    protected WebApplicationContext createRootApplicationContext(ServletContext servletContext) {}


    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder;
    }
}

今晚就先到這里吧,明早gogogo

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68657.html

相關文章

  • 基于SpringBoot后臺管理系統(Encache配置、全局異常處理(重點))(四)

    摘要:因為抽象類天生就是用來被繼承的。由于不支多繼承,子類不能夠繼承多個類,但可以實現多個接口如果基本功能在不斷改變,那么就需要使用抽象類。全局異常處理接下來,我們在看看控制統一的異常攔截機制。 3、Spring Boot 緩存配置、全局異常處理 說明 如果您有幸能看到,請認閱讀以下內容; 1、本項目臨摹自abel533的Guns,他的項目 fork 自 stylefeng 的 Guns!...

    Benedict Evans 評論0 收藏0
  • 基于SpringBoot后臺管理系統(異常、注解、node、page)(二)

    摘要:序列化的類可顯式聲明的值,這個中定義異常和中定義方式幾乎一樣。工具類初始化是為每個序列化類產生的版本標識,可用來保證在反序列時,發送方發送的和接受方接收的是可兼容的對象。 common.exception、annotation、node、page 說明 如果您有幸能看到,請認閱讀以下內容; 1、本項目臨摹自abel533的Guns,他的項目 fork 自 stylefeng 的 Gu...

    paulli3 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

    摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...

    mrcode 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

    摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...

    U2FsdGVkX1x 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<