1 @Configuration

1.1 作用

  • 用于指定当前类是一个Spring的配置类,当创建容器的时候会从该类上加载注解。获取容器的时候需要使用AnnotationApplicationContext(有@Configuration注解的类的.class)。

1.2 属性

  • value:用于指定配置类的字节码。

1.3 应用示例

  • 示例:
package com.sunxiaping.spring5.config;

import org.springframework.context.annotation.Configuration;

/**
* @Configuration 注解标注的类就代表当前类是一个配置类
*/
@Configuration
public class SpringConfiguration {
}

2 @ComponentScan

2.1 作用

  • 用于指定Spring在初始化容器时要扫描的包。作用和在Spring的xml配置文件中的<context-component-scan base-package="com.sunxiaping"/>是一样的。

2.2 属性

  • basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。

2.3 应用示例

  • 示例:
package com.sunxiaping.spring5.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration
@ComponentScan("com.sunxiaping.spring5")
public class SpringConfiguration {
}

3 @Bean

3.1 作用

  • 该注解只能写在方法上,表明使用此方法创建一个对象,并且放入到Spring容器中。默认情况下,方法名就是Bean的id。

3.2 属性

  • name:给当前@Bean注解方法创建的对象指定一个名称(即Bean的id)。

3.3 应用示例

  • 示例:
package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import javax.sql.DataSource;
import java.beans.PropertyVetoException; @Configuration
@ComponentScan("com.sunxiaping.spring5")
public class SpringConfiguration { @Bean
public DataSource dataSource() {
try {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=GMT%2B8&amp;allowPublicKeyRetrieval=true");
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setUser("root");
dataSource.setPassword("123456");
return dataSource;
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
} @Bean
public QueryRunner queryRunner(DataSource dataSource) {
return new QueryRunner(dataSource);
} }

4 @PropertySource

4.1 作用

  • 用于加载.properties文件中的配置。例如我们配置数据源的时候,可以把连接信息写到properties文件中,就可以使用此注解指定properties配置文件的位置。

4.2 属性

  • value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:

4.3 应用示例

  • 示例:
  • jdbc.properties
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=GMT%2B8&amp;allowPublicKeyRetrieval=true
jdbc.user=root
jdbc.password=123456
  • JdbcConfig.java
package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource;
import java.beans.PropertyVetoException; @PropertySource("classpath:jdbc.properties")
public class JdbcConfig { @Value("${jdbc.driverClass}")
private String driverClass;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.password}")
private String password; @Bean
public DataSource dataSource() {
try {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setDriverClass(driverClass);
dataSource.setUser(user);
dataSource.setPassword(password);
return dataSource;
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
} @Bean
public QueryRunner queryRunner(DataSource dataSource) {
return new QueryRunner(dataSource);
}
}

5 @Import

5.1 作用

  • 导入其他的配置类,在引起其他配置的时候,可以不用再写@Configuration注解。当然,写上也没什么关系。

5.2 属性

  • value[]:用于指定其他配置类的字节码

5.3 应用示例

  • 示例:
  • JdbcConfig.java
package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource;
import java.beans.PropertyVetoException; @PropertySource("classpath:jdbc.properties")
public class JdbcConfig { @Value("${jdbc.driverClass}")
private String driverClass;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.password}")
private String password; @Bean
public DataSource dataSource() {
try {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setDriverClass(driverClass);
dataSource.setUser(user);
dataSource.setPassword(password);
return dataSource;
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
} @Bean
public QueryRunner queryRunner(DataSource dataSource) {
return new QueryRunner(dataSource);
}
}
  • SpringConfig.java
package com.sunxiaping.spring5.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; @Configuration
@ComponentScan("com.sunxiaping.spring5")
@Import(JdbcConfig.class)
public class SpringConfiguration { }

6 通过注解获取容器

  • 示例:
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);

Spring的新注解的更多相关文章

  1. 阶段3 2.Spring_06.Spring的新注解_8 spring整合junit完成

    Junit的核心Runner在执行的时候不会创建容器.同时它字节码文件,也改不了 spring整合junit 想办法把junit里面的不能加载容器的main方法换掉.从而实现创建容器.有了容器就可以实 ...

  2. 阶段3 2.Spring_06.Spring的新注解_5 spring的新注解-PropertySource

    数据库的链接 次数是写死的 新建配置文件 定义成员变量 value注解实现 与配置文件的key对应 PropertySource 要想让spring去读取这个配置文件 resource编译后都跑到了. ...

  3. 阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean

    下面要解决第二部分的配置问题 这两行一出场,就表示可以通过调用构造函数实例化.因为这都是newInstance 上面的需要加上参数,下面的没有任何参数 下面这俩实现的效果不一样. 下面这个除了会创建对 ...

  4. 阶段3 2.Spring_06.Spring的新注解_6 Qualifier注解的另一种用法

    复制上面的数据源到下面改改名字 现在就是有两个数据源 创建一个eesy02的数据库 找到sql语句再创建Account表 现在就相当于有连个库一个eesy一个是eesy02这连个库. account里 ...

  5. 阶段3 2.Spring_06.Spring的新注解_4 spring的新注解-Import

    把Configuration的直接先注释掉 那么运行测试类的查询所有 并不影响我们的使用 不写同样可以执行的原因是因为这里把SpringConfiguration这个类作为方法传入进去了 新建 Spr ...

  6. 阶段3 2.Spring_06.Spring的新注解_3 AnnotationConfigApplicationContext的使用

    目前这个配置文件除了导约束就没有其他的内容了. 删除这个bean.xml文件 但是测试类里面还是读取的xml的信息 注解 查看ApplicationContext的 关系图 查看实现类的实现类 之前我 ...

  7. 阶段3 2.Spring_06.Spring的新注解_1 spring的新注解-Configuration和ComponentScan

    解决测试类重复代码的问题,xml还是存在的问题,没法脱离xml文件 要想在QueryRunner上加注解,是加不了的 创建工程 复制依赖项到pom.xml 复制注解的工程里面的com文件夹 配置文件b ...

  8. 阶段3 2.Spring_06.Spring的新注解_7 spring整合junit问题分析

    测试类重复代码的问题 这是之前的方式 运行findAll的方法,没有问题 测试人员不需要关心上面的方法,.应该关心的各个方法是否能够正常的运行 对于一个测试工程师,只要写完变量就可以测试了. 可以使用 ...

  9. Spring中基于注解的IOC(二):案例与总结

    2.Spring的IOC案例 创建maven项目 导入依赖 pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

随机推荐

  1. 更新操作 关于json字符串的拼接、json字符串与json对象之间的转换

    更新操作  后台 /** * 更新人员 * @return "updateSdr" */ public String updateTheSdr(){ jsonstr = " ...

  2. unity 角色换装

    unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...

  3. Python学习之表的介绍

    9.4 表的介绍 存储引擎 数据的存储方式就是存储引擎,引擎不同,数据的存储方式就不同 MySQL中比较重要的引擎: InnoDB:mysql5.6以上,默认的存储方式 ​ 支持 transactio ...

  4. Python学习之线程

    8.5 线程 进程:开辟空间,加载数据,资源单位 线程:流水线,执行代码,执行单位 8.5.1 线程的概念 是操作系统能够进行运算调度的最小单位,线程包含在进程中,是进程中的执行单元,一个进程至少包含 ...

  5. 写一个比较全的进制转换函数--ic

    //写一个比较全的进制转换函数-----未完成 #include <stdio.h> //D进制转换后 (比如10-2进制) 结果可能会很大 需要很长的字符串来存 #include < ...

  6. CSS未完

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...

  7. html+css实现奥运五环(环环相扣)

    <!DOCTYPE html> <html> <head> <title>奥运五环</title> <style type=" ...

  8. 引用dll出现了黄色感叹号

    今天引用一个dll的时候出现了一个小感叹号,重新生成也无济于事,如下图 原因是,被引用的项目使用的是.NET2.0版本,而当前项目使用的是.NET3.5版本,所以出现了错误 解决办法把当前项目和引用项 ...

  9. Java最新学习线路(基础,源码,项目,实战)

    如需获取以下学习资源请关注公众号:Java编程指南 我们为自学者编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么 ...

  10. ELK的搭建以及使用

    一.架构如图: 二.工作机制: 在需要收集日志的应用上安装filebeat(需要修改配置文件,配置文件稍后介绍),启动filebeat后,会收集该应用的日志推送给redis,然后logstash从re ...