/*
* 原始注解:用途,自己编写的类注入容器使用
* @Component
* @Controller
* @Service
* @Repository
* 以上4个功能基本一样,类似加入<bean id="userDao" class="cn.UserImpl"></bean>
*
* @Autowired:自动注入,需要注入的属性或构造函数加上,spring会自动从容器去查找类型匹配的的,然后赋值
* @Qualifier: 结合@Autowired一起使用,可以配置单独名字
* @Resource:相当于@Autowired+@Resource
* @Value:注入普通属性
* @Scope:标记bean在作用范围
*
*
*
* 新注解:用途,不是自己编写的类需要注入到容器使用
* @Configuration:标记该类为spring配置类,从该类加载注解 类似applictionContxt.xml文件
* @ComponentScan:spring初始化时候需要扫描的包 类似:<context:component-scan base-package="com.itheima"/>
* @Bean:用在方法上,标记将该方法的返回值加入spring容器
* @PropertySource:用于加载.properties 文件中的配置
* @Import:用于导入其他配置类
*
*
* */
1.测试方法入口
import cn.web.config.SpringCofiguration; import cn.web.domain.User; import cn.web.server.UserServer; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; /* * 利用SpringJUnit4ClassRunner注入spring测试 * 步骤: * 1.引入junit和SpringJUnit * 2.测试类加载类 @RunWith(SpringJUnit4ClassRunner.class) * 3.加载配置 @ContextConfiguration("classpath:applictionContext.xml") * 4.自动获取属性值 * 5.测试 * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringCofiguration.class) public class NewAnnoTest { @Autowired private UserServer server; @Test public void test(){ List<User> all = server.findAll(); System.out.println(all); } }
2.注解配置
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; /* * 原始注解:用途,自己编写的类注入容器使用 * @Component * @Controller * @Service * @Repository * 以上4个功能基本一样,类似加入<bean id="userDao" class="cn.UserImpl"></bean> * * @Autowired:自动注入,需要注入的属性或构造函数加上,spring会自动从容器去查找类型匹配的的,然后赋值 * @Qualifier: 结合@Autowired一起使用,可以配置单独名字 * @Resource:相当于@Autowired+@Resource * @Value:注入普通属性 * @Scope:标记bean在作用范围 * * * * 新注解:用途,不是自己编写的类需要注入到容器使用 * @Configuration:标记该类为spring配置类,从该类加载注解 类似applictionContxt.xml文件 * @ComponentScan:spring初始化时候需要扫描的包 类似:<context:component-scan base-package="com.itheima"/> * @Bean:用在方法上,标记将该方法的返回值加入spring容器 * @PropertySource:用于加载.properties 文件中的配置 * @Import:用于导入其他配置类 * * * */ @Configuration//标志该类是Spring的核心配置类 @ComponentScan("cn.web")//需要扫描包 <context:component-scan base-package="com.itheima"/> @Import(DataSourceConfiguration.class)//分包导入配置 public class SpringCofiguration { }
3.数据库链接配置
import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; @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") //Spring会将当前方法的返回值以指定名称存储到Spring容器中 public DruidDataSource getDataSource(){ DruidDataSource dataSource=new DruidDataSource(); dataSource.setDriverClassName(driver); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
4.server层,接口代码就不列出了
import cn.web.dao.UserDao; import cn.web.domain.User; import cn.web.server.UserServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServerImpl implements UserServer { @Autowired private UserDao dao; public List<User> findAll() { return dao.findAll(); } }
5.dao层
import cn.web.dao.UserDao; import cn.web.domain.User; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import sun.dc.pr.PRError; import javax.sql.DataSource; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; @Repository public class UserDaoImpl implements UserDao { @Autowired private DruidDataSource ds; public List<User> findAll() { String sql="SELECT * FROM USER"; try { DruidPooledConnection connection = ds.getConnection(); System.out.println(connection); } catch (SQLException e) { e.printStackTrace(); } List<User> list =new ArrayList<User>(); User user=new User(); user.setId(1); user.setPassword("123"); user.setUsername("admin"); list.add(user); return list; } }