0.相關知識
@Component、@Repository、@Service
@Repository
//@Scope設置bean的作用范圍
@Scope("singleton")//單例 prototype每次創建都會給一個新實例。
public class BookDaoImpl implements BookDao {
//生命周期public void save() {System.out.println("book dao save ...");}//@PostConstruct設置bean的初始化方法@PostConstruct//在構造方法之前public void init() {System.out.println("init ...");}//@PreDestroy設置bean的銷毀方法@PreDestroy//銷毀之前public void destroy() {System.out.println("destroy ...");}}
Autowired使用暴力反射,無需Setter方法了。
Config類
@Configuration//一般只寫一個 ,其他的用Import
@ComponentScan("com.itheima")
//@Import:導入其他config類的配置信息
@Import({JdbcConfig.class})
//@PropertySource加載properties配置文件
@PropertySource({"jdbc.properties"})
public class SpringConfig {
}
@Service
public class BookServiceImpl implements BookService {//@Autowired:注入引用類型,自動裝配模式,默認按類型裝配@Autowired//@Qualifier:自動裝配bean時按bean名稱裝配@Qualifier("bookDao")private BookDao bookDao;public void save() {System.out.println("book service save ...");bookDao.save();}
}
1.整合tinylog?
1.新建tinylog.properties
writer = console
writer.file = log.txt
writer.level = info
2.使用
Logger.tag("SYSTEM").info("Hello World!"); // Output
Logger.info("Hello World!"); // Ignored
2.整合Mybatis、druid、Spring框架
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- 數據庫驅動(以MySQL為例) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency>
1.新建jdbc.properties文件,配置mysql連接配置(需要使用@PropertySource掃描)
2.新建配置類SpringConfig、JdbcConfig、MybatisConfig
package org.leo.web.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;@Configuration
@ComponentScan("org.leo.web")
//@PropertySource:加載類路徑jdbc.properties文件
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
package org.leo.web.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class JdbcConfig {@Value("${jdbc.driver}")//使用@Value注入private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String userName;@Value("${jdbc.password}")private String password;@Bean//告訴Spring容器,管理這個對象public DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}
package org.leo.web.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class MybatisConfig {//定義bean,SqlSessionFactoryBean,用于產生SqlSessionFactory對象@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage("com.itheima.domain");ssfb.setDataSource(dataSource);return ssfb;}//定義bean,返回MapperScannerConfigurer對象@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.itheima.dao");return msc;}
}