Spring框架IOC实现方式——纯注解 方式

1、创建配置类SpringConfig

import javax.sql.DataSource;

@Configuration
@ComponentScan("com.sp.study")
@PropertySource({
          
   "classpath:jdbc.properties"})
public class SpringConfig {
          
   

    @Value("${jdbc.driver}")
    private String driverrClassName;

    @Value("${jdbc.url}")
    private String url;

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

    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")
    public DataSource createDataSource(){
          
   
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverrClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }
}

注解解释:

    @Configuration ,表名当前类是⼀个配置类; @ComponentScan, 注解,替context:component-scan,需要扫描的包; @PropertySource,引⼊外部属性配置⽂件(如:jdbc.properties); @Import ,引⼊其他配置类; @Value ,对变量赋值,可以直接赋值,也可以使⽤ ${} 读取资源配置⽂件中的信息; @Bean ,将⽅法返回对象加⼊ SpringIOC 容器。

2、启动

javaEE

@Test
public void testIoCAnno() throws Exception {
          
   
    //通过配置类来启动容器
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
    //测试
    AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
    System.out.println(accountDao);
}

Java web

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!--告诉ContextloaderListener知道我们使用注解的方式启动ioc容器-->
  <context-param>
    <param-name>contextClass</param-name>
    <param-value>
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext
    </param-value>
  </context-param>

  <!--配置Spring ioc容器的配置文件-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <!--配置启动类的全限定类名-->
    <param-value>com.sp.study.SpringConfig</param-value>
  </context-param>
  <!--使用监听器启动Spring的IOC容器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

</web-app>
经验分享 程序员 微信小程序 职场和发展