个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaweb
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
@Component
定义bean:@Component("bookDao")
public class BookDaoImpl1 implements BookDao {
@Override
public void save() {
System.out.println("BookDao save...");
}
}
<context:component-scan base-package="com.practice"/>
public class App1 {
public static void main(String[] args) {
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext1.xml");
BookDao bookDao = (BookDao) act.getBean("bookDao");
System.out.println(bookDao);
//按类型找
BookService bookService = act.getBean(BookService.class);
System.out.println(bookService);
}
}
@Component
注解的三个衍生注解:
@Controller
:用于表现层bean定义@Service
:用于业务层bean定义@Repository
:用于数据层bean定义
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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:component-scan base-package="com.practice"/>
beans>
@Configuration
@ComponentScan("com.practice")
public class SpringConfig {
}
@Configuration
表示配置文件,当前类为配置类@ComponentScan
表示扫描包下的配置信息,设定扫描路径,此注解只能添加一次,多个数据请用数组格式。@ComponentScan({"com.practice.dao","com.practice.service"})
//读取Spring核心配置文件
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext1.xml");
//读取Java配置类
ApplicationContext act = new AnnotationConfigApplicationContext(SpringConfig.class);
@Repository("bookDao1")
@Scope("singleton")
public class BookDaoImpl2 implements BookDao {
@Override
public void save() {
System.out.println("BookDao save...");
}
}
@Configuration
@ComponentScan("com.practice")
public class SpringConfig {
}
public class AppForAnnotation1 {
public static void main(String[] args) {
ApplicationContext act = new AnnotationConfigApplicationContext(SpringConfig.class);
BookDao bookDao1 = (BookDao) act.getBean("bookDao1");
BookDao bookDao2 = (BookDao) act.getBean("bookDao1");
System.out.println(bookDao1);
System.out.println(bookDao2);
}
}
@Repository("bookDao1")
@Scope("singleton")
public class BookDaoImpl2 implements BookDao {
@Override
public void save() {
System.out.println("BookDao save...");
}
}
@Configuration
@ComponentScan("com.practice")
public class SpringConfig {
}
public class AppForAnnotation1 {
public static void main(String[] args) {
ApplicationContext act = new AnnotationConfigApplicationContext(SpringConfig.class);
BookDao bookDao1 = (BookDao) act.getBean("bookDao1");
BookDao bookDao2 = (BookDao) act.getBean("bookDao1");
System.out.println(bookDao1);
System.out.println(bookDao2);
}
}
@Scope("singleton")
定义bean的作用范围@PostConstruct
、@PreDestroy
定义bean的生命周期@Repository("bookDao1")
@Scope("singleton")
public class BookDaoImpl2 implements BookDao {
@Override
public void save() {
System.out.println("BookDao save...");
}
@PostConstruct
public void init() {
System.out.println("BookDao init...");
}
@PreDestroy
public void destroy() {
System.out.println("BookDao destroy...");
}
}
@Autowired
注解开启自动装配模式(按类型)@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
@Override
public void save() {
System.out.println("bookService save...");
bookDao.save();
}
}
@Qualifier
注解开启指定名称装配bean@Service
public class BookServiceImpl implements BookService {
@Autowired
@Qualifier("bookDao2")
private BookDao bookDao;
@Override
public void save() {
System.out.println("bookService save...");
bookDao.save();
}
}
@Qualifier
注解无法单独使用,必须配合@Autowired
注解使用@Value()
实现简单注入@Repository("bookDao")
public class BookDaoImpl1 implements BookDao {
@Value("practice")
private String name;
@Override
public void save() {
System.out.println("BookDao save..." + name);
}
}
@PropertySource
注解加载properties文件@Configuration
@ComponentScan("com.practice")
@PropertySource({"jdbc3.properties"})
public class SpringConfig {
}
*
@Bean
配置第三方beanpublic class JdbcConfig {
//1.定义方法获得要管理的对象
//2.添加注解
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/mybatis");
ds.setUsername("root");
ds.setPassword("123456");
return ds;
}
}
public class JdbcConfig {
//1.定义方法获得要管理的对象
//2.添加注解
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/mybatis");
ds.setUsername("root");
ds.setPassword("123456");
return ds;
}
}
@Import({JdbcConfig.class})
public class SpringConfig {
}
@Configuration
public class JdbcConfig {
//1.定义方法获得要管理的对象
//2.添加注解
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/mybatis");
ds.setUsername("root");
ds.setPassword("123456");
return ds;
}
}
@Configuration
@ComponentScan("com.practice")
public class SpringConfig {
}
public class JdbcConfig {
@Value("com.mysql.jdbc.Driver")
private String driver;
@Value("jdbc:mysql://localhost:3306/mybatis")
private String url;
@Value("root")
private String userName;
@Value("123456")
private String passWord;
//1.定义方法获得要管理的对象
//2.添加注解
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(passWord);
return ds;
}
}
@Bean
public DataSource dataSource(BookService bookService){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(passWord);
return ds;
}