Spring学习之旅-核心基础篇(9)

63 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情


写在前面

作为一个java程序员,spring应该都不会陌生了吧?

对于大部分程序员来说,spring的入门,估计跑起一个框架,熟悉一下开发的流程,基本上就掌握spring框架的开发了。

随着开发年限的变大,我们不能仅仅是掌握到这个地步,更应该深入的学习spring框架。

这不,接下来就是spring框架的学习之旅了,希望可以帮助到大家。

一、基于纯注解方式的使用

1.1 @ComponentScan

相当于context: component-scan标签

组件扫描器,扫描 @Component@Controller@service@Repository注解的类。

该注解是编写在类上面的, 一般配合@Configuration注解一起使用。
  • 属性:
basepackages: 用于指定要扫描的包。
value: 和basepackages作用一样。
  • 示例代码:

Bean类( Service类) :

@service
public class UserServiceImpl implements UserService {
    @override
    public void saveUser(){
        system.out.println("保存用户 Service实现"); 
    }
}

配置类:

@Configuration
@Componentscan(basepackages="com.llsydn.springStudy.service")
public class SpringConfiguration {
    public SpringConfiguration(){
        system.out.println("容器初始化...");
    }
    // @Bean 
    // @scope("prototype")
    // public Userservice userService(){
    //     return new UserServiceImpl(1,"张三");
    // }
}

1.2 @PropertySource

相当于context:property-placeholder标签

编写在类上面,作用是加载properties配置文件
  • 属性
value[]: 用于指定properties文件路径,如果在类路径下,需要写上classpath
  • 示例代码
@Configuration
@propertysource("clas spath:jdbc.properties")
public class JdbcConfig {
    @value("${jdbc.driver}")
    private String driver;
    @value("${jdbc.url}")
    private String url;
    @value("${jdbc.username}")
    private String username;
    @value("${jdbc.password}")
    private String password;
    /**
    *创建一个数据源,并存入spring 容器中
    */
    @Bean(name = "datasource")
    public DataSource createDataSource(){
        try {
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverclass(driver);
            ds.setJdbcurl(url);
            ds.setUser(username) ;
            ds.setPassword(password);
            return ds;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

properties文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///spring
jdbc.username=root
jdbc.password=root

问题:

当系统中有多个配置类时怎么办呢?

想想之前使用XML 配置的时候是如何解决该问题的。

1.3 @Import

相当于spring配置文件中的<import>标签

用来组合多个配置类,在引入其他配置类时,可以不用再写@Configuration注解。当然,写上也没问题。
  • 属性
value: 用来指定其他配置类的字节码文件
  • 示例代码:
@Configuration
@Componentscan(basepackages="com.llsydn.springStudy")
@Import({ JdbcConfig.class }) 
public class SpringConfiguration {

}

@Configuration
@propertysource("classpath:jdbc.properties")
public class JdbcConfig {

}

1.4 创建纯注解方式上下文容器

  • Java应用( AnnotationConfigApplicationContext )
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService service = context.getBean(UserService.class);
service.saveUser();
  • Web应用( AnnotationConfigWebApplicationContext,后面讲解)
<web-app>
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            com.llsydn.springStudy.test.SpringConfiguration
        </param-value>
    </context-param>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>

好了,以上就是Spring学习之旅-核心基础篇(9) 的全部内容了。

今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^

如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!

image.png