Spring-OCとDI注記の開発
1.Springカスタム以外のオブジェクトの構成
1.1構成方式
非カスタムオブジェクトと非カスタムオブジェクトは、Springにとってオブジェクトなので、構成方法に違いはありません.
下に、C 3 P 0データソース(C 3 P 0接続プール)を例に、Springの「非カスタムオブジェクト」の構成を示します
開発手順
①データソースの座標とデータベース駆動座標のインポート
②データソースオブジェクトの作成
③データソースの基本接続データの設定
④データソースによる接続リソースの取得と接続リソースの返却
1.2準備作業
1.2.1 c 3 p 0接続プール座標のインポート
1.2.2 mysqlデータベース駆動座標のインポート
1.3データソースの作成
1.3.1手動でC 3 P 0接続プールを作成する
1.3.2 Spring C 3 P 0接続プールの構成
1.4スプリング構成の最適化(プロファイル抽出)
1.4.1 jdbcを抽出する.propertiesプロファイル
1.4.2 Springのプロファイルにプロファイルを導入する
注:このセグメント構成では、Springに対応するネーミングスペース制約**context**を導入する必要があります.
1.4.3 dataSourceの構成の変更
Springコンテナのpropertiesファイルのロード
2.Spring注記開発
2.1概要Spring
Springは軽量コードで再構成されるフレームワークであり、構成が比較的重く、開発効率に影響するため、注釈開発はトレンドであり、xmlプロファイルの代わりに注釈を簡単に構成し、開発効率を高めることができる.
2.1 Spring元の注記
Spring元の注記は主に代替ラベルの構成です
2.1.1オブジェクトの注釈の作成
注釈
説明
@Component
クラスで使用するBeanのインスタンス化
@Controller
Webレイヤクラスで使用してBeanをインスタンス化
@Service
Beanをインスタンス化するためにserviceレイヤクラスで使用
@Repository
daoレイヤクラスで使用するBeanのインスタンス化
ケース:
2.1.2注入依存注記
注釈
説明
@Autowired
タイプ依存注入に基づいて、複数が見つかった場合、変数名依存注入
@Qualifier
@Autowiredとともに使用され、名前に基づいて依存注入を行うために使用されます.
@Resource
@Autowired+@Qualifierに相当し、名前で注入
@Value
通常のプロパティを入力します.一般にpropertiesのkeyを取得し、メンバー変数に注入するために使用されます.
ケース:
@Autowiredを使用して参照タイプを入力
@Valueを使用した文字列の入力
2.1.3作用範囲の注記
注釈
説明
@Scope
2つの値:prototype->マルチインスタンス、singleton->単一インスタンス(デフォルト)
ケース:
2.1.4その他の注記
注釈
説明
@PostConstruct
オブジェクトが作成されたときに実行される寸法付け方法
@PreDestroy
マークアップされたメソッドは、オブジェクトが破棄されたときに実行されます.
ケース:
2.1.4注意事項
Spring注記開発を使用する場合、アプリケーションContext.xmlでは、注釈構成を使用するクラス、フィールド、メソッドを識別するために、どのパケットとそのサブパケットの下のBeanがスキャンする必要があるかを指定するコンポーネントスキャンを構成します.
3 Spring新規注記
3.1新しい注釈の概要
Springの新しい注釈とは、Springのプロファイルを完全に置き換えるためのものです.
3.2新しい注釈の構成
注釈
説明
@Configuration
現在のクラスがSpring構成クラスであることを指定します.コンテナを作成すると、そのクラスから注記がロードされます.
@ComponentScan
Springがコンテナを初期化するときにスキャンするパッケージを指定します.
@Bean
メソッドで、寸法を使用してメソッドの戻り値をSpringコンテナに格納します.
@PropertySource
ロードに使用します.propertiesファイルの構成
@Import
その他の構成クラスのインポート
3.2新しい注釈の詳細
3.2.1 @Configuration
クラスがSpringの構成クラスであることを示し、springの構成情報を格納します.
3.2.2 @ComponentScan
Springがコンテナを初期化するときにスキャンするパッケージを指定します.
xml構成時の
3.2.3 @Import
他の構成クラスのインポートに使用
xml構成時の
3.2.4 @PropertySource
propertiesプロファイル用
xml構成時の
3.2.5 @Bean
メソッドを使用すると、Springは自動的にメソッドを実行し、メソッドが返されるオブジェクトをspringコンテナに格納します.
3.2.5新しい注釈のテスト(構成クラス)
3.Spring統合Junit
3.1概要
従来のコードでは,テストクラスでは依存注入を正常に使用できなかった.
テストクラスでも依存注入を使用できるようにするには、Spring統合Junitが必要です.
3.2 Spring統合Junit手順
①スプリング統合Junit座標のインポート
②元の運転期間を@Runwith注記で置き換える
③@ContextConfigurationを使用してプロファイルまたは構成クラスを指定する
④@Autowiredを使用してテスト対象を注入
⑤試験方法を作成して試験する
3.3 Spring統合Junitコード実装
①スプリング統合Junit座標のインポート
②元の運転期間を@Runwith注記で置き換える
③@ContextConfigurationを使用してプロファイルまたは構成クラスを指定する
④@Autowiredを使用してテスト対象を注入
⑤試験方法を作成して試験する
1.1構成方式
非カスタムオブジェクトと非カスタムオブジェクトは、Springにとってオブジェクトなので、構成方法に違いはありません.
下に、C 3 P 0データソース(C 3 P 0接続プール)を例に、Springの「非カスタムオブジェクト」の構成を示します
開発手順
①データソースの座標とデータベース駆動座標のインポート
②データソースオブジェクトの作成
③データソースの基本接続データの設定
④データソースによる接続リソースの取得と接続リソースの返却
1.2準備作業
1.2.1 c 3 p 0接続プール座標のインポート
<dependency>
<groupId>c3p0groupId>
<artifactId>c3p0artifactId>
<version>0.9.1.2version>
dependency>
1.2.2 mysqlデータベース駆動座標のインポート
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.39version>
dependency>
1.3データソースの作成
1.3.1手動でC 3 P 0接続プールを作成する
@Test
public void testC3P0() throws Exception {
//
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUser("root");
dataSource.setPassword("root");
//
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
1.3.2 Spring C 3 P 0接続プールの構成
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
bean>
1.4スプリング構成の最適化(プロファイル抽出)
1.4.1 jdbcを抽出する.propertiesプロファイル
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
1.4.2 Springのプロファイルにプロファイルを導入する
注:このセグメント構成では、Springに対応するネーミングスペース制約**context**を導入する必要があります.
<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">
<context:property-placeholder location="classpath:jdbc.properties"/>
beans>
1.4.3 dataSourceの構成の変更
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
Springコンテナのpropertiesファイルのロード
<context:property-placeholder location="xx.properties"/>
<property name="" value="${key}"/>
2.Spring注記開発
2.1概要Spring
Springは軽量コードで再構成されるフレームワークであり、構成が比較的重く、開発効率に影響するため、注釈開発はトレンドであり、xmlプロファイルの代わりに注釈を簡単に構成し、開発効率を高めることができる.
2.1 Spring元の注記
Spring元の注記は主に代替ラベルの構成です
2.1.1オブジェクトの注釈の作成
注釈
説明
@Component
クラスで使用するBeanのインスタンス化
@Controller
Webレイヤクラスで使用してBeanをインスタンス化
@Service
Beanをインスタンス化するためにserviceレイヤクラスで使用
@Repository
daoレイヤクラスで使用するBeanのインスタンス化
ケース:
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("save running... ...");
}
}
// , , , ,Dao Repository
2.1.2注入依存注記
注釈
説明
@Autowired
タイプ依存注入に基づいて、複数が見つかった場合、変数名依存注入
@Qualifier
@Autowiredとともに使用され、名前に基づいて依存注入を行うために使用されます.
@Resource
@Autowired+@Qualifierに相当し、名前で注入
@Value
通常のプロパティを入力します.一般にpropertiesのkeyを取得し、メンバー変数に注入するために使用されます.
ケース:
@Autowiredを使用して参照タイプを入力
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired // , , userDao
private UserDao userDao;
@Override
public void save() {
userDao.save();
}
}
@Valueを使用した文字列の入力
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Value(" ") //
private String str;
@Value("${jdbc.driver}") // properties ,
private String driver;
@Override
public void save() {
System.out.println(str);
System.out.println(driver);
}
}
2.1.3作用範囲の注記
注釈
説明
@Scope
2つの値:prototype->マルチインスタンス、singleton->単一インスタンス(デフォルト)
ケース:
@Scope("singleton")
public class UserDaoImpl implements UserDao {
//
}
2.1.4その他の注記
注釈
説明
@PostConstruct
オブジェクトが作成されたときに実行される寸法付け方法
@PreDestroy
マークアップされたメソッドは、オブジェクトが破棄されたときに実行されます.
ケース:
@PostConstruct
public void init(){
System.out.println(" .... ....");
}
@PreDestroy
public void destroy(){
System.out.println(" .... ....");
}
2.1.4注意事項
Spring注記開発を使用する場合、アプリケーションContext.xmlでは、注釈構成を使用するクラス、フィールド、メソッドを識別するために、どのパケットとそのサブパケットの下のBeanがスキャンする必要があるかを指定するコンポーネントスキャンを構成します.
<context:component-scan base-package="com.itheima">context:component-scan>
3 Spring新規注記
3.1新しい注釈の概要
Springの新しい注釈とは、Springのプロファイルを完全に置き換えるためのものです.
3.2新しい注釈の構成
注釈
説明
@Configuration
現在のクラスがSpring構成クラスであることを指定します.コンテナを作成すると、そのクラスから注記がロードされます.
@ComponentScan
Springがコンテナを初期化するときにスキャンするパッケージを指定します.
@Bean
メソッドで、寸法を使用してメソッドの戻り値をSpringコンテナに格納します.
@PropertySource
ロードに使用します.propertiesファイルの構成
@Import
その他の構成クラスのインポート
3.2新しい注釈の詳細
3.2.1 @Configuration
クラスがSpringの構成クラスであることを示し、springの構成情報を格納します.
@Configuration
public class SpringConfiguration {
}
3.2.2 @ComponentScan
Springがコンテナを初期化するときにスキャンするパッケージを指定します.
xml構成時の
に相当@Configuration
@ComponentScan("com.itheima")
public class SpringConfiguration {
}
3.2.3 @Import
他の構成クラスのインポートに使用
xml構成時の
に相当@Configuration
@ComponentScan("com.itheima")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {
}
3.2.4 @PropertySource
propertiesプロファイル用
xml構成時の
に相当@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;
}
3.2.5 @Bean
メソッドを使用すると、Springは自動的にメソッドを実行し、メソッドが返されるオブジェクトをspringコンテナに格納します.
@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
}
3.2.5新しい注釈のテスト(構成クラス)
@Test
public void testAnnoConfiguration() throws Exception {
// SpringConfiguration.class, Spring
ApplicationContext ac =
new AnnotationConfigApplicationContext(SpringConfiguration.class);
// userService
UserService userService = (UserService)ac.getBean("userService");
userService.save();
// dataSource
DataSource dataSource = (DataSource)ac.getBean("dataSource");
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
3.Spring統合Junit
3.1概要
従来のコードでは,テストクラスでは依存注入を正常に使用できなかった.
テストクラスでも依存注入を使用できるようにするには、Spring統合Junitが必要です.
3.2 Spring統合Junit手順
①スプリング統合Junit座標のインポート
②元の運転期間を@Runwith注記で置き換える
③@ContextConfigurationを使用してプロファイルまたは構成クラスを指定する
④@Autowiredを使用してテスト対象を注入
⑤試験方法を作成して試験する
3.3 Spring統合Junitコード実装
①スプリング統合Junit座標のインポート
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>5.0.2.RELEASEversion>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
②元の運転期間を@Runwith注記で置き換える
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJunitTest {
}
③@ContextConfigurationを使用してプロファイルまたは構成クラスを指定する
@RunWith(SpringJUnit4ClassRunner.class)
// spring
//@ContextConfiguration(value = {"classpath:applicationContext.xml"})
// spring
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
}
④@Autowiredを使用してテスト対象を注入
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
@Autowired
private UserService userService;
}
⑤試験方法を作成して試験する
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class SpringJunitTest {
@Autowired
private UserService userService;
@Test
public void testUserService(){
userService.save();
}
}