zoukankan      html  css  js  c++  java
  • 微服务深入浅出(1)-- SpringBoot

    基于Spring的开发框架,旨在简化配置快速开发,是新一代web开发框架。下面介绍一下常用的几个功能:

    1、Spring单元测试

    针对DAO层

    (1) @RunWith(Spring.class),表示要在Spring环境中做测试, 于是就可以使用@Autowired等注解了,

    (2) @SpringBootTest(classes=TestBeanConfiguration.class),表示可以使用SpringBoot环境了,这样可以用@Autowired注解,把@Mapper注释过的Mapper对象引入.为了引入外部依赖的Bean对象,需要指定classes=TestBeanConfiguration.class.

    注意: 之所以要指定classes=TestBeanConfiguration.class,这时因为Product这个类,并没有使用@Component等注解注入IOC容器.

    (3) @Transactional注解来开启事务

    (4) @Rollback(true)表示开启回滚数据功能,默认为True.

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes=TestBeanConfiguration.class)
    @Transactional
    @Rollback(true)
    public class ProductMapperTest {
    
        @Autowired
        private ProductMapper mapper;
        
        @Autowired
        private Product product;
        
        @Before
        public void setUp(){
            product.setPname("持续交付");
            product.setType("书籍");
            product.setPrice(69d);
        }
        
        @Test
        public void testAdd() {
            Assert.assertEquals(Integer.valueOf(1), mapper.add(product));
        }
    
    }

    针对Service层

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
    public class ProductControllerTest {
    
        @Autowired
        private TestRestTemplate template;
        
        @Test
        public void test() {
            String body = template.getForObject("/ms/product/1", String.class);
            Assert.assertEquals("success", body);
        }
    
    }

    针对Controller

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
    public class ProductControllerTest {
    
        @Autowired
        private TestRestTemplate template;
        
        @Test
        public void test() {
            String body = template.getForObject("/ms/product/1", String.class);
            Assert.assertEquals("success", body);
        }
    
    }

    2、Springboot配置文件

    @Configuration
    @EnableAutoConfiguration //自动加载配置信息
    @ComponentScan("com.kelly")//使包路径下带有注解的类可以使用@Autowired自动注入
    public class StartApplication {
        public static void main(String[] args) {
            SpringApplication.run(StartApplication.class, args);
        }
    }

    我们使用@Value("${属性名}")来注入application.yml/application.properties的配置值

    当我们使用自定义配置文件的时候,只需要:

    @Component
    @ConfigurationProperties(prefix="defineTest")
    @PropertySource("classpath:define.properties")
    public class DefineEntity {
        
        private String pname;
        
        private String password;
    
        public String getPname() {
            return pname;
        }
    
        public void setPname(String pname) {
            this.pname = pname;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }  
    }

    在使用的时候注入DefineEntity Bean即可。

    注意:如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。

    3、多环境配置文件

    在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

    application-dev.properties:开发环境,

    application-test.properties:测试环境

    application-prod.properties:正式环境

    下面介绍三种配置文件的加载方式:

    1)直接在启动类上使用@PropertySource注解来加载不同的配置文件

    2)修改spring.profiles.active属性

    3)执行命令行

       如上面介绍所讲的一样,我们可以使用命令行,比如执行java -jar xxx.jar --spring.profiles.active=test

    通过上面,三种不同执行方式,我们也可以发现配置文件的优先级,优先级高的配置或覆盖优先级低的配置,同时公共配置属性放到application.properties,私有的配置属性放在application-{profile}.properties文件中。

  • 相关阅读:
    动态为datagrid增加控件
    对DataGrid中的ListBox设置值
    Enhancing Inserting Data through the DataGrid Footer, Part 2
    Setting Focus to a TextBox in an EditItemTemplate
    Enhancing Inserting Data through the DataGrid Footer
    CRM选择行变色
    【转】on delete cascade
    VS如何连接2种类型的数据库
    SQL Server 已配置为允许远程连接 解决办法
    【转】sql server 重命名表字段
  • 原文地址:https://www.cnblogs.com/ijavanese/p/9190499.html
Copyright © 2011-2022 走看看