• Spring Boot注解Bean及其装配原理


    SpringBoot

    注解的方式

    Java配置

    JdbcConfig.java

    //使用java 配置
    @Configuration 											//声明是一个配置类
    @PropertySource("classpath:/config/jdbc.properties")    //指定属性文件的路径是:jdbc.properties
    public class JdbcConfig {
    	@Value("${jdbc.url}")								//通过 @Value 为属性注入值
    	String url;
    	@Value("${jdbc.driverClassName}")
    	String driverClassName;
    	@Value("${jdbc.username}")
    	String username;
    	@Value("${jdbc.password}")
    	String password;
    	
    	@Bean                                              //@Bean将方法的返回值加入Spring容器中。
    	public  DruidDataSource dataSource() {
    		// TODO Auto-generated method stub
    		DruidDataSource dataSource = new DruidDataSource();
    		dataSource.setDriverClassName(driverClassName);
    		dataSource.setUrl(url);
    		dataSource.setUsername(username);
    		dataSource.setPassword(password);
    		return dataSource;
    	}
    }
    
    #jdbc.properties
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/nutzdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false
    jdbc.username=root
    jdbc.password=123456
    
    使用SpringBoot 的属性注入(Spring Boot推荐的)

    application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/nutzdemo?useUnicode=true&characterEncoding=utf-8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    

    JdbcProperties.java

    @ConfigurationProperties(prefix = "spring.datasource") //通过@ConfigurationProperties声明当前类为属性读取类
    @Data
    public class JdbcProperties {
    	
    	private String url;
    	private String username;
    	private String password;
    	private String driverClassName;
    }
    

    JdbcConfig.java

    @Configuration
    
    //通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象
    
    @EnableConfigurationProperties(JdbcProperties.class)
    public class JdbcConfig {
    	
    //	@Autowired
    //	private JdbcProperties prop;             //第一种使用方式
        
    //	private JdbcProperties jprop;
    //	public JdbcConfig2(JdbcProperties jprop) {
    //		this.jprop = jprop;                  //第二种使用方式
    //	}
    	
    	@Bean
    	public  DruidDataSource dataSource(JdbcProperties jdbc) {      //第三种使用方式
    		// TODO Auto-generated method stub
    		DruidDataSource dataSource = new DruidDataSource();
    		dataSource.setDriverClassName(jdbc.getDriverClassName());
    		dataSource.setUrl(jdbc.getUrl());
    		dataSource.setUsername(jdbc.getUsername());
    		dataSource.setPassword(jdbc.getPassword());
    		return dataSource;
    	}
    } 
    
    更优雅的注入
    @Configuration
    public class JdbcConfig{
    	@Bean
    	// 声明要注入的属性前缀,Spring Boot会自动把相关属性通过set方法注入到DataSource
    	@ConfigurationProperties(prefix ="spring.datasource")
    	public DruidDataSource dataSource() {
    		DruidDataSource dataSource = new DruidDataSource();
    		return dataSource;
    	}
    }
    

    使用的前提是:该类必须有对应属性的set方法!

    自动配置原理

    • @SpringBootApplication--@EnableAutoConfifiguration

    • 默认配置原理

      默认配置类--spring.factories

      默认配置属性--通过@EnableAutoConfifiguration注解引入properties文件,可在application.yml/application.properties 自定义配置覆盖默认属性值

    多配置文件

    • 如果properties和yml文件都存在,如果有重叠属性,默认以Properties优先
    • 当一个项目中有多个yml配置文件的时候,可以以application-**.yml命名,然后再在application.yml中激活即可,如
    #加载其它配置文件 
    spring: 
    	profiles: 
    		active: abc,def
    

    整合框架

    • 整合Spring MVC、Mybatis

    • Junit

      @RunWith(SpringRunner.class)
      @SpringBootTest
      @Slf4j
      public class RedisTest {
          @Autowired
          private RedisTemplate redisTemplate;
      
          @Test
          public void test() {
              ......
          }
      }
      
    • Redis

    项目部署

    在pom.xml添加插件spring-boot-maven-plugin,使用maven的命令package打包,之后在项目下的 target 目录中将有jar包

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
    	</plugins>
    </build>
    
    java -jar xxx-1.0-SNAPSHOT.jar
    
  • 相关阅读:
    linux下通过vim编辑文件的方法
    无法访问VMWARE虚拟机中linux的nginx地址
    IDEA中通过Maven插件使用MyBatis Generator
    解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 以及MyBatis批量加载xml映射文件的方式
    MySQL 解决source 命令导入数据库 乱码
    MySQL SELECT表达式的执行顺序是从左往右依次执行
    MySQL 子查询(四)子查询的优化、将子查询重写为连接
    MySQL 子查询(三) 派生表、子查询错误
    MySQL 子查询(二)
    RocketMQ使用
  • 原文地址:https://www.cnblogs.com/jyd0124/p/springboot.html
Copyright © 2020-2023  润新知