• Spring IOC(三)


    约束

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
        <context:annotation-config/>
        <context:component-scan base-package="com.mystudy.entity"/>
    </beans>
    

    如果要使用注解,需要添加context的相关约束。

    还需要配置注解开启和扫包,如果配置了扫包,那么就已经隐式的开启了注解,可以不配置注解开启。

    注解

    @Component:在类上,声明为bean对象

    • 如果不加其它配置,那么默认的该bean的id名称为类名首字母小写
    • 可以加value属性,显式声明id名称

    @Repository:持久层专用
    @Service:服务层专用
    @Controller:访问层专用

    @Autowired:按类型注入
    @Qualifier:与@Autowired搭配使用,如果有多个类型相同,则按该注解指定的名字注入
    @Resource:按名字注入
    @Value:基本类型和字符串注入

    纯注解示例

    1、SpringConfig.java

    @Configuration//标识当前类为配置类
    //配置扫描加载组件
    @ComponentScan(basePackages = {"com.yaorange.dao.impl","com.yaorange.service.impl"})
    //配置属性文件加载
    @PropertySource({"classpath:props/db.properties"})
    public class SpringConfig {
        @Value("${jdbc.driverClass}")
        private String driverClass;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String username;
        @Value("${jdbc.password}")
        private String password;
    
    //    @Bean("jdbcTemplate")
        @Bean
        public JdbcTemplate createJdbcTemplate(DataSource dataSource){
            return new JdbcTemplate(dataSource);
        }
    
        @Bean
        public DataSource createDataSource(){
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName(driverClass);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            return dataSource;
        }
    }
    

    2、JdbcConfig.java

    @Configuration
    //配置属性文件加载
    @PropertySource({"classpath:props/db.properties"})
    public class JdbcConfig {
        @Value("${jdbc.driverClass}")
        private String driverClass;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String username;
        @Value("${jdbc.password}")
        private String password;
    
        @Bean
        public DataSource createDataSource(){
            DriverManagerDataSource dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName(driverClass);
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            return dataSource;
        }
    }
    

    3、SpringConfig.java

    @Configuration//标识当前类为配置类
    //配置扫描加载组件
    @ComponentScan(basePackages = {"com.yaorange.dao.impl","com.yaorange.service.impl"})
    //多文件配置
    @Import({JdbcConfig.class})
    public class SpringConfig {
    
    //    @Bean("jdbcTemplate")
        @Bean
        public JdbcTemplate createJdbcTemplate(DataSource dataSource){
            return new JdbcTemplate(dataSource);
        }
    
    }
    

    4、通过配置获取容器

    ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
    

    纯注解

    (1)@Configuration

    用于类上,指定当前类是一个spring配置类

    • value属性:一般不指定

    (2)@ComponentScan

    用于类上,指定spring在初始化容器时要扫描的包

    • basePackages属性:用于指定要扫描的包
    • value属性:与上相同
    //扫描多个包,使用value属性
    //@ComponentScan({"com.yaorange.service.impl","com.yaorange.dao.impl"})
    //扫描多个包,使用basePackages属性
    //@ComponentScan(basePackages = {"com.yaorange.service.impl","com.yaorange.dao.impl"})
    

    (3)@Bean

    用于方法上,表明使用此方法创建一个对象,并且将方法返回值放入spring容器进行IOC管理。

    • name属性:给创建的bean以id名称

    (4)@PropertySource

    用于加载.properties文件中的配置。

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

    (5)@Import

    用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解。当然,写上也没问题。

    • value[]:用于指定其他配置类的字节码。
  • 相关阅读:
    项目风险软考之软工基础知识(1)
    序列输出ZOJ1108 FatMouse's Speed
    电平波特率UART自适应波特率的设置方法
    nullnull2013金山西山居创意游戏程序挑战赛——初赛(3)生日猜猜猜
    删除监听oracle单库彻底删除干净的方法
    类关闭由一个activity启动第二个activity
    代码文件android:向手机卡上写入文件时总是不成功,解决办法
    功能应用程序延迟发送:4款定时发送短信的应用程序
    监听事件android activity中键盘的监听
    nullnull爆笑百家讲坛之十大逆袭情侣.
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/13793579.html
Copyright © 2020-2023  润新知