Spring IoC 容器配置(全注解方式 )
去除applicationContext.xml实现简单的spring,把bean交给spring容器管理,获取属性的注入
定义一个配置类:
@Configuration
用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration 注解的类.class)。
@ComponentScan
用于指定 spring 在初始化容器时要扫描的包。作用和在 spring 的 xml 配置文件中的:<context:component-scan base-package="com.itheima"/>是一样的。
@Configuration
@ComponentScan(basePackages = "com.zl.spring") //类似于xml中<context:component-scan> 扫描注解
//加载多个文件//@ComponentScan(basePackages = {"",""})
@Import(JdbcConfig.class) //导入其他配置类
public class SpringConfiguration {
}@Import
用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。当然,写上也没问题
@PropertySource
用于加载.properties 文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties 配置文件中,就可以使用此注解指定 properties 配置文件的位置。
@Bean
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器。把这个方法的返回的对象添加到Spring容器
//可写可不写,提高可读性
@Configuration
@PropertySource("classpath:db.properties") //加载properties中的文件,classpath: 类路径
public class JdbcConfig {
    @Value("${jdbc.driverClassName}")
    private String driverClass;
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.user}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    //给连接池的数据源:  c3p0 赋四大参数
    @Bean("dataSource")
    public DataSource createDataSource() {
        ComboPooledDataSource ds = new ComboPooledDataSource();
        try {
            ds.setDriverClass(driverClass);
            ds.setJdbcUrl(jdbcUrl);
            ds.setUser(username);
            ds.setPassword(password);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
            return null;
        }
        return ds;
    }
    //给Dbutils工具类,注入添加数据源
    @Bean("queryRunner")
    @Scope("prototype") //设置为多例
    public QueryRunner createQueryRunner(@Qualifier("dataSource") DataSource ds) { //获取制定数据源,每次都拿同一个数据源
        return new QueryRunner(ds);
    }
}userDaoImpl同样的获取方式:
@Repository("userDao")
public class UserDaoImpl implements IUserDao {
    @Autowired  //根据类型   推荐使用
    @Qualifier("queryRunner") //根据id
    private QueryRunner runner;userServiceImpl同样的获取方式:
@Service("userService")
public class UserServiceImpl implements IUserService {
    //使用@Resource 注解实现注入 ,不写name按类型
    @Resource(name="userDao")
    private IUserDao userDao;测试类:使用 AnnotationConfigApplicationContext 获取 ApplicationContext 对象
private IUserService userService;
    @Before
    public void setUp() throws Exception {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
         userService = applicationContext.getBean(IUserService.class);
    } 相关推荐
  itjavashuai    2020-07-28  
   smalllove    2020-07-27  
   willluckysmile    2020-06-29  
   TiDBPingCAP    2020-06-21  
   丽丽    2020-06-11  
   willluckysmile    2020-06-10  
   MrFuWen    2020-06-09  
   yuanye0    2020-06-08  
   whbing    2020-05-19  
   yuanye0    2020-05-14  
   kong000dao0    2020-05-10  
   方志朋    2020-05-08  
   somyjun    2020-05-01  
   suixinsuoyu    2020-04-29  
   咻pur慢    2020-04-22  
   tianxiaolu    2020-04-06  
   吾日五省我身    2020-03-28  
   CoderBoy    2020-03-25