Преглед изворни кода

2024年4月10日 02点28分

starlight_0208 пре 5 месеци
родитељ
комит
c68fcb77af

+ 7 - 4
src/main/java/org/starter/learning/AppTestForAnnotaion.java

@@ -3,15 +3,18 @@ package org.starter.learning;
 
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.starter.learning.config.SpringConfig;
 import org.starter.learning.dao.BookDao;
+import org.starter.learning.dao.impl.BookDaoImpl2;
+import org.starter.learning.service.BookService;
+import org.starter.learning.test.SimpleTestBase;
+
+import javax.sql.DataSource;
 
 public class AppTestForAnnotaion {
     public static void main(String[] args) {
         ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
-        BookDao bookDao = ctx.getBean(BookDao.class);
-        System.out.println(bookDao);
-        bookDao.getBooks();
+        DataSource dataSource = ctx.getBean(DataSource.class);
+        System.out.println(dataSource);
     }
 }

+ 8 - 4
src/main/java/org/starter/learning/config/SpringConfig.java

@@ -1,9 +1,13 @@
 package org.starter.learning.config;
 
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.context.annotation.*;
+import org.starter.learning.dao.impl.JdbcConfig;
+
+import javax.sql.DataSource;
 
 @Configuration
 @ComponentScan("org.starter.learning")
-public class SpringConfig {
-}
+@Import({JdbcConfig.class})
+@PropertySource("jdbc.properties")
+public class SpringConfig { }

+ 37 - 0
src/main/java/org/starter/learning/dao/impl/BookDaoImpl2.java

@@ -0,0 +1,37 @@
+package org.starter.learning.dao.impl;
+
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.starter.learning.dao.BookDao;
+import org.starter.learning.pojo.Book;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("bookDao2")
+@Scope("singleton")
+public class BookDaoImpl2 implements BookDao {
+    public BookDaoImpl2() {
+        System.out.println("BookDao object created!");
+    }
+    @Override
+    public List<Book> getBooks() {
+        List<Book> bookList = new ArrayList<>();
+        bookList.add(new Book("Hello", "123", "pass"));
+        return  bookList;
+    }
+
+    // Bean创建后执行的方法
+    @PostConstruct
+    public void init() {
+        System.out.println("After create...");
+    }
+
+    // Bean销毁前执行的方法
+    @PreDestroy
+    public void destroy() {
+        System.out.println("Before destroy...");
+    }
+}

+ 31 - 0
src/main/java/org/starter/learning/dao/impl/JdbcConfig.java

@@ -0,0 +1,31 @@
+package org.starter.learning.dao.impl;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.starter.learning.dao.BookDao;
+
+import javax.sql.DataSource;
+
+public class JdbcConfig {
+    @Value("com.mysql.cj.jdbc.Driver")
+    private String driver;
+    @Value("jdbc:mysql://localhost:3306/testdb")
+    private String url;
+    @Value("root")
+    private String username;
+    @Value("123456")
+    private String password;
+
+    @Bean("dataSource")
+    public DataSource dataSource(BookDao bookDao) {
+        System.out.println(bookDao);
+        DruidDataSource dataSource = new DruidDataSource();
+        dataSource.setDriverClassName(driver);
+        dataSource.setUrl(url);
+        dataSource.setUsername(username);
+        dataSource.setPassword(password);
+        return dataSource;
+    }
+}

+ 8 - 3
src/main/java/org/starter/learning/service/impl/BookServiceImpl.java

@@ -1,21 +1,26 @@
 package org.starter.learning.service.impl;
 
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
 import org.starter.learning.dao.BookDao;
-import org.starter.learning.dao.impl.BookDaoImpl;
 import org.starter.learning.pojo.Book;
 import org.starter.learning.service.BookService;
 
 import java.util.List;
 
+@Component
 public class BookServiceImpl implements BookService {
+
+
     private BookDao bookDao;
     @Override
     public List<Book> listBook() {
         return bookDao.getBooks();
     }
 
+    @Autowired
+    @Qualifier("bookDao2")
     public void setBookDao(BookDao bookDao) {
         System.out.println("Setting bookDao into BookService Implement...");
         this.bookDao = bookDao;

+ 6 - 0
src/main/java/org/starter/learning/test/SimpleTestBase.java

@@ -0,0 +1,6 @@
+package org.starter.learning.test;
+
+public interface SimpleTestBase {
+    void printName();
+    void printValue();
+}

+ 22 - 0
src/main/java/org/starter/learning/test/SimpleTestBaseImpl.java

@@ -0,0 +1,22 @@
+package org.starter.learning.test;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SimpleTestBaseImpl implements SimpleTestBase{
+    @Value("${jdbc.username}")
+    private String name;
+    @Value("${jdbc.maxConnection}")
+    private int value;
+
+    @Override
+    public void printName() {
+        System.out.println("Name: " + name);
+    }
+
+    @Override
+    public void printValue() {
+        System.out.println("Value: " + value);
+    }
+}

+ 1 - 0
src/main/resources/jdbc.properties

@@ -2,4 +2,5 @@ jdbc.driver = com.mysql.cj.jdbc.Driver
 jdbc.url = jdbc:mysql://localhost:3306/testdb
 jdbc.username = root
 jdbc.password = 123456
+jdbc.maxConnection = 10
 username = root666