spring笔记2注解开发

准备工作:

  • 导入4个核心包和2个日志包,还需要导入spring-aop.jar
  • 配置组件
    (@component)扫描:告知spring要扫描哪个包下的类
    在配置文件中配置组件扫描:<context:component-scan base-package="com.itheima"></context:component-scan>

原始注解

替代bean的配置 替代属性注入

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="singleton" init-method="" destroy-method=""></bean>
    <property name="" ref=""/>
    <property name="" value=""/>

@Component:需要被Spring创建对象的类上面添加@Component(bean的id)注解
@Controller:使用在web层的bean上的
@Service:使用在service层的bean上的
@Repository:(仓库) 使用在dao层的bean上的

@Autowired:自动注入,注意:按照类型进行匹配并注入的
@Qualifier(“userDao”) //按照对象名称(id)进行注入
注意:此处的@Qualifier结合@Autowired一起使用

@Resource(name=”userDao”) //@Autowired+@Qualifier(“userDao”)

@Value(“zhangsan”) 基本不用
@Value(“${jdbc.driver}”) //从spring容器中获得制定的key=jdbc.driver对应的值

@Scope(“singleton、prototype”)

@PostConstruct 初始化方法
@PreDestroy 销毁方法
在开发中,习惯 自定义的bean使用注解配置 非自定义的bean使用配置文件配置(重点)

spring全注解开发

spring的新注解出现的目的是完全替代配置文件
@Configuration //标注该类是一个配置类
@ComponentScan(“com.itheima”) //组件扫描
@Import({ DataSourceConfiguration.class }) //引入其他配置类
@PropertySource(“classpath:jdbc.properties”) //加载properties配置文件

@Configuration  //标注该类是一个配置类
//<context:component-scan base-package="com.itheima"></context:component-scan>
@ComponentScan("com.itheima")
//import
@Import({ DataSourceConfiguration.class })
public class SpringConfiguration {

}

方法上使用
@Bean(name=”dataSource”) //Spring会将该方法的返回值以指定的名称存储到spring容器中

@Bean
    public static PropertySourcesPlaceholderConfigurer  getPropertySourcesPlaceholderConfigurer(){
        return new PropertySourcesPlaceholderConfigurer();
    }

Spring集成junit

  • 导入额外包
    spring-test.jar
    junit.jar
    spring-aop.jar
  • 编写测试类
package com.itheima.test;

@RunWith(SpringJUnit4ClassRunner.class)  //指定测试的类是谁         //@ContextConfiguration(value="classpath:applicationContext.xml")  //指定配置文件
@ContextConfiguration(classes={SpringConfiguration.class})  //指定配置类
public class SpringJunitTest {

        @Autowired
        private UserDao userDao;

        @Autowired
        private UserService userService;

        @Test
        public void test1(){
            userDao.save();
            userService.save();
        }

}

spring创建第3方对象

在spring中配置非自定义的bean(数据源、连接池(池化思想) dataSource)


<!-- 在spring容器中加载jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties"/>

<!-- 配置数据源实例C3P0  将数据量的连接信息提取到一个properties文件中 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
 </bean>    
public void test5() throws Exception{
        //加载配置文件 创建spring容器
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获得DAtasource
        DataSource dataSource = (DataSource) app.getBean("dataSource");
        Connection connection = dataSource.getConnection();

        System.out.println(connection);
    }

猜你喜欢

转载自blog.csdn.net/sinat_29211659/article/details/81415523