springboot原理的理解

基础服务层用springclound的思想是要用controller作为入口,用dubbo的思想一般是server直接被调用   这种都可以实现分布式

单纯的springboot可以实现ha(用redissession共享),但是分布式的话积就类似http调用了(控制层和服务层在一起),和springcloud比没有注册发现,

(自己写的代码,框架中的源码都如此)先校验有没有自定义了同名的bean,有自定义就用自定义的,没有就用框架默认的

start 引入的是自动配置修改一些配置文件即可(主类中开启),===否则需要自定义配置就用@Configuration

配置中自定义的bean,先定义好,然后@bean new好,@Bean的东西会同名注入框架,也可手动set

shiro使用redis做session管理就像将spring的缓存实现类配置成redis一样,sessiondao可以自己写,也可用shiro-redis.jar中现成的(bank-web)

用xml:

1,ImportResource(propertyresource加载属性文件)

2,转化成对象

3,类似框架中转化

Resource[] mappers = resourceResolver.getResources(mapperLocation);

                    resources.addAll(Arrays.asList(mappers));

mybatis.mapper-locations=classpath:mapper/*.xml

核心流程的对应配置:

@SpringBootApplication

@EnableTransactionManagement

@MapperScan(basePackages = "com.houbank.bank.web.mapper")

public class BankWebApplication extends SpringBootServletInitializer{

}

springboot相当于框架启动入口,所有的配置集成这之后完成

@springbootapplication:

   @springbootconfiguration---扫描所有的配置类

   @enabloeautoconfiguration---自动装配所有的start框架中的spring.factories框架

   @componentscan     ---扫描注解的范围

有上述就配置成功了所有的框架集成---这些就主导了springboot的主要启动流程,其他没有的例如开启事物,扫描等需要在入口另加注解  @EnableTransactionManagement  @MapperScan(basePackages = "com.houbank.bank.web.mapper")

 @EnableTransactionManagement  @MapperScan  等类似配置主要是配置的延展(比自定义配置更自动只要打开配置,不要重头开始定义配置),和修改(修改一存在的容器中的值)

@import

   @Import注解就是之前xml配置中的import标签,可以用于依赖第三方包中bean的配置和加载在4.2之前只支持导入配置类

   在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean(直接实例化放在容器中)

@EnableTransactionManagement  这种方式的开启过程其实就是@importSelrctor 框架的解析器ConfigurationClassParser遇到这个会解析成配置类

利用其selectImports方法导入里面指定类的bean,后可以在框架容器中使用,所以@importSelrctor功能类似@import  即@EnableTransactionManagement也就是引入相应功能的配置

@MapperScan(basePackages = "com.houbank.bank.web.mapper") ---》 @Import(MapperScannerRegistrar.class)  注册到相应的已有的上下文,达到配置的重修改

 ======

springboot

1,主类

2,配置类

3,配之类使用的基础类----一般没有ioc注解,可以有di注解,配之类用@bean

4,普通的controller,service,dao层

2-3就是补充1主类中的扫描自定义配置部分

用于配置的类我们可能不会用@component,@service,@controller,@respostity   会在

@configuration类中 new 然后@bean到容器中,但是这个类可以有@resource,@autowire等注入标签,编译的时候不会出错,在使用的时候有@bean使得进入

spring的容器所以可以使用

public class MyShiroRealm extends AuthorizingRealm {

    @Resource

    private UserService userService;

    @Resource

    private ResourcesService resourcesService;

}

@Configuration

public class ShiroConfig {

   @Bean

    public MyShiroRealm myShiroRealm(){

        MyShiroRealm myShiroRealm = new MyShiroRealm();

        myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());

        return myShiroRealm;

    }

    }

参看:

https://blog.csdn.net/m0_37444820/article/details/81044382

http://www.cnblogs.com/niechen/p/9262452.html

相关推荐