spring註解及簡單實用
阿新 • • 發佈:2020-10-28
/*
* 原始註解:用途,自己編寫的類注入容器使用
* @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; } }