Spring配置转换为注解

applicationContext.xml

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">




    <!--  加载外部的properties文件  -->
<!--    <context:property-placeholder location="classpath:Jdbc.properties"></context:property-placeholder>-->

<!--    <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>-->



    <!-- 想用注解 得配置组件扫描,告诉spring 在哪个包下面的Bean需要Spring进行扫描,扫描到注解从而创建对象-->

<!--    <context:component-scan base-package="com.itheima"/>-->

<!--    <import resource=""/>-->

</beans>
# Jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/book
jdbc.username=root
jdbc.password=123456
//标志该类是Spring的核心配置类
@Configuration
//<context:component-scan base-package="com.itheima"/>
@ComponentScan("com.itheima")
//<!--    <import resource=""/>-->
@Import(DataSourceConfiguration.class)  //多个则{DataSourceConfiguration.class,x,x,x,......}
public class SpringConfiguration {
    
}




//<context:property-placeholder location="classpath:Jdbc.properties"></context:property-placeholder>
@PropertySource("classpath:Jdbc.properties")
public class DataSourceConfiguration {

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

    @Bean("dataSource")   // @Bean或@Bean("dataSource") 带名称:spring会将当前方法的返回值以指定名称存储到spring容器中
    public DataSource getDataSource() throws PropertyVetoException {
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setDriverClass(driver);
        comboPooledDataSource.setJdbcUrl(url);
        comboPooledDataSource.setUser(username);
        comboPooledDataSource.setPassword(password);
        return comboPooledDataSource;
    }

}


public interface UserDao {
    public void save();
}




//<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
//@Component("userDao")

@Repository("userDao")
public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("存你奶奶个der......");
    }
}

public interface UserService {
    public void save();
}



//<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"></bean>

//@Component("userService")
@Service("userService")
@Scope("singleton")     //@Scope("singleton")
public class UserServiceImpl implements UserService {

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

//    <property name="userDao" ref="userDao"></property>
//    @Autowired      //按照数据类型从Spring容器进行匹配
//    @Qualifier("userDao")   //是按照id的值从容器进行匹配,但是主要此处@Qualifier和@Autowired一起用 才可以实现名称注入

    @Resource(name = "userDao")     //相当于 @Resource(name = "userDao") = @Qualifier+@Autowired
    private UserDao userDao;

    public void save() {
        userDao.save();
        System.out.println(driver);
    }

    @PostConstruct
    public void init(){
        System.out.println("Service 对象的初始化方法");
    }

    @PreDestroy
    public void destory(){
        System.out.println("Service 对象的销毁方法");
    }
}
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {

    @Autowired
    private DataSource dataSource;

    @Autowired
    private UserService userService;

    @Test
    public void test1() throws SQLException {
        userService.save();
        System.out.println(dataSource.getConnection());
    }

}

public class DataSourceTest {
    @Test
    public void test4() throws SQLException {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource bean = context.getBean(DataSource.class);
        Connection connection = bean.getConnection();
        System.out.println(connection);
        connection.close();

    }

    @Test
    public void test3() throws Exception {
        ResourceBundle resourceBundle=ResourceBundle.getBundle("Jdbc");
        String  driver=resourceBundle.getString("jdbc.driver");
        String  url=resourceBundle.getString("jdbc.url");
        String  username=resourceBundle.getString("jdbc.username");
        String  password=resourceBundle.getString("jdbc.password");
        ComboPooledDataSource dataSource=new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }


    @Test
    public void test2() throws PropertyVetoException, SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/book");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("123456");
        Connection connection = druidDataSource.getConnection();
        System.out.println(connection);
    }

    @Test
    public void test1() throws PropertyVetoException, SQLException {
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/book");
        comboPooledDataSource.setUser("root");
        comboPooledDataSource.setPassword("123456");
        Connection connection = comboPooledDataSource.getConnection();
        System.out.println(connection);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值