springboot篇】二. springboot配置详解

基于【springboot篇】一. idea搭建springboot项目

SpringBoot配置

1 创建Bean

1.1 定义Bean

package com.wpj.bean;

import lombok.*;

/**
 * ClassName: User
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\16 0016 19:00
 * @since JDK 1.8
 */
@Data
public class User {

    private Integer id;

    private String username;

    private String password;

}

1.2 定义WebConfig

package com.wpj.config;

import com.wpj.bean.*;
import org.springframework.context.annotation.*;

/**
 * ClassName: WebConfig
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\16 0016 18:59
 * @since JDK 1.8
 */
@Configuration // 表示这个配置相关的类
public class WebConfig {

    // springboot会调用添加@Bean这个函数,会把方法返回值放入spring容器中
    // bean的id为方法名
    @Bean
    public User user(){
        User user = new User();
        user.setId(1);
        user.setUsername("jieKaMi");
        user.setPassword("123456");
        return user;
    }
}

1.3 Test

package com.wpj.config;

import com.wpj.bean.*;
import org.springframework.context.annotation.*;

/**
 * ClassName: WebConfig
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\16 0016 18:59
 * @since JDK 1.8
 */
@Configuration // 表示这个配置相关的类
public class WebConfig {

    // springboot会调用添加@Bean这个函数,会把方法返回值放入spring容器中
    // bean的id为方法名
    @Bean
    public User user(){
        User user = new User();
        user.setId(1);
        user.setUsername("jieKaMi");
        user.setPassword("123456");
        return user;
    }
}

2. 创建web组件(servlet,filter,interceptor)

2.1 初始化filter

2.2 这是原来通过web.xml初始化Filter的方式

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>com.wpj.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2.3 通过springboot初始化Filter

2.3.1 定义Filter

package com.wpj.filter;

import javax.servlet.*;
import java.io.*;

/**
 * ClassName: EncodingFilter
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\16 0016 19:20
 * @since JDK 1.8
 */
public class EncodingFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 输出方便查看是否初始化成功
        System.out.println("encoding: " + filterConfig.getInitParameter("encoding"));
    }
    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("EncodingFilter.doFilter");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
2.3.2 WebConfig定义方法返回FilterRegistrationBean
	@Bean
    public FilterRegistrationBean filterRegistrationBean(){
    
        FilterRegistrationBean encodingFilter = new FilterRegistrationBean();

        encodingFilter.setFilter(new EncodingFilter());
        encodingFilter.setName("EncodingFilter");
        encodingFilter.addUrlPatterns("/*");
        encodingFilter.addInitParameter("encoding","utf-8");

        return encodingFilter;
    }
2.3.3 测试

运行主启动类
在这里插入图片描述

2.3.4 容器启动时初始化Filter成功。。。。

3. SpringBoot配置文件( 属性文件)

  1. 给上面User添加几个属性并通过属性文件给User的属性赋值

    package com.wpj.bean;
    
    import lombok.*;
    import org.springframework.boot.context.properties.*;
    import org.springframework.format.annotation.*;
    import org.springframework.stereotype.*;
    
    import java.util.*;
    
    /**
     * ClassName: User
     * Description:
     *
     * @author JieKaMi
     * @version 1.0
     * @date: 2020\1\16 0016 19:00
     * @since JDK 1.8
     */
    @Data
    @ConfigurationProperties(prefix = "user")
    @Component
    public class User {
    
        private Integer id;
        private String username;
        private String password;
    
        private List<String> email;
        private String[] loves;
        private Set<String> phones;
        private Map<String, String> maps;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birthday;
    }
    
    
  2. 将上面WebConfig的user方法注释掉(避免后面通过属性文件配置User报错)在这里插入图片描述

3.1 application.properties(少用)

user.id=10
user.username=admin
user.password=123456

# 接受集合的写法
user.emails[0]=wpj@qq.com
user.emails[1]=jiekami@qq.com
user.emails[2]=jieKaMi@qq.com

# 接受数组
user.loves[0]=Spring
user.loves[1]=SpringBoot
user.loves[2]=MyBatis-plus

# 接受set
user.phones[0]=1587
user.phones[1]=xxx
user.phones[2]=0279

# 接受map
user.maps[k1]=v1
user.maps[k2]=v2
user.maps[k3]=v3

# 时间
user.birthday=2020-01-16

在这里插入图片描述
也可以通过注解取值

jdbc.username=root
	@Value("${jdbc.username}")
	private String username;

在这里插入图片描述

3.2 application.yml (常用)

  1. 用application.yml替代application.properties,但又不想删除application.properties,可以将application.propertiesg改名为application.properties_,这样不用删除也不会加载到这个配置文件
  2. yml有严格的格式 分号: 后面要空格 tab一下代表一个级别
user:
  id: 10
  username: qfAdmin
  password: 456
  emails:
    - qfAdmin@1000phome.com
    - qfAdmin@163.com
    - qfAdmin@qq.com
  loves:
    - Spring
    - MyBatis
    - SpringBoot
  phones:
    - 123
    - 333
    - 444
  maps:
    k1: v1
    k2: v2
    k3: v3
  birthday: 2020-01-16

在这里插入图片描述

3.2.1 引入依赖使yml带有提示
<!-- 添加这个依赖在yml中写自定义对象属性的时候有提示-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
3.3 读取属性

读取属性用的最多的还是以下方式

@Value("${jdbc.username}")
private String username;
package com.xfire.core.client; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.xfire.core.entity.UserInfo; import com.xfire.core.service.IUserInfoService; /** *@author jilongliang *@Date 2012-3-5 * */ public class UserInfoClient { public static void main(String[] args) { getServiceList(); setServiceList(); } static String url = "http://localhost:8081/xfire/services/UserInfo"; /** * */ public static void getServiceList() { Service service = new ObjectServiceFactory() .create(IUserInfoService.class); try { IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory() .create(service, url); List list = (ArrayList) iAddressService .getAddressList(); System.out.println("一共多少条数据:" + list.size()); for (Iterator iter = list.iterator(); iter.hasNext();) { UserInfo a = iter.next(); System.out.println(a); } } catch (MalformedURLException e) { e.printStackTrace(); } } public static void setServiceList() { Service service = new ObjectServiceFactory() .create(IUserInfoService.class); try { IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory() .create(service, url); List listAdd = new ArrayList(); UserInfo address = new UserInfo(); address.setIdentifier(1); address.setCountry("中國"); address.setProivice("廣東省"); address.setCity("陽江"); address.setAddress("廣東陽春"); address.setPostCode("1111111"); address.setExist(false); address.setArrary(new String[] { "22", "23", "24" }); listAdd.add(address); address.setIdentifier(2); address.setCountry("中國"); address.setProivice("廣東省"); address.setCity("陽江"); address.setAddress(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值